Java " />

扫描二维码下载沐宇APP

沐宇

微信扫码使用沐宇小程序

沐宇

java鎬庝箞鑾峰彇娉涘瀷T鐨刢lass

扬州沐宇科技
2024-01-13 14:00:46
Java

鍦↗ava涓紝鐢变簬绫诲瀷鎿﹂櫎鐨勯檺鍒讹紝鏃犳硶鐩存帴鑾峰彇娉涘瀷绫诲瀷鐨凜lass瀵硅薄銆備絾鏄紝鍙互閫氳繃浠ヤ笅涓ょ鏂瑰紡鏉ヨ幏鍙栨硾鍨嬬被鍨嬬殑Class瀵硅薄锛?/p>

  1. 閫氳繃浼犻€掍竴涓狢lass鍙傛暟鏉ヨ幏鍙栨硾鍨嬬被鍨嬬殑Class瀵硅薄锛?/li>
public class MyClass<T> {
    private Class<T> type;
    
    public MyClass(Class<T> type) {
        this.type = type;
    }
    
    public Class<T> getType() {
        return type;
    }
}

// 浣跨敤绀轰緥
MyClass<String> myClass = new MyClass<>(String.class);
Class<String> stringClass = myClass.getType();

鍦ㄤ笂闈㈢殑绀轰緥涓紝閫氳繃鍦ㄦ瀯閫犳柟娉曚腑浼犻€掍竴涓狢lass鍙傛暟鏉ヨ幏鍙栨硾鍨嬬被鍨嬬殑Class瀵硅薄锛屽苟淇濆瓨鍦ㄤ竴涓垚鍛樺彉閲忎腑锛岀劧鍚庨€氳繃getType鏂规硶鏉ヨ幏鍙栬Class瀵硅薄銆?/p>

  1. 閫氳繃鍙嶅皠鏉ヨ幏鍙栨硾鍨嬬被鍨嬬殑Class瀵硅薄锛?/li>
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class MyClass<T> {
    public Class<T> getType() {
        Type type = getClass().getGenericSuperclass();
        ParameterizedType paramType = (ParameterizedType) type;
        Type[] actualTypeArguments = paramType.getActualTypeArguments();
        return (Class<T>) actualTypeArguments[0];
    }
}

// 浣跨敤绀轰緥
MyClass<String> myClass = new MyClass<String>();
Class<String> stringClass = myClass.getType();

鍦ㄤ笂闈㈢殑绀轰緥涓紝閫氳繃浣跨敤鍙嶅皠锛屽彲浠ヨ幏鍙栧埌娉涘瀷绫诲瀷鐨凜lass瀵硅薄銆傞鍏堥€氳繃getClass鏂规硶鑾峰彇褰撳墠瀵硅薄鐨凜lass瀵硅薄锛岀劧鍚庨€氳繃getGenericSuperclass鏂规硶鑾峰彇璇lass瀵硅薄鐨勭埗绫荤殑Type瀵硅薄锛屾帴鐫€鍒ゆ柇璇ype瀵硅薄鏄惁涓篜arameterizedType绫诲瀷锛屽鏋滄槸鐨勮瘽锛岄€氳繃getActualTypeArguments鏂规硶鑾峰彇鍒板疄闄呯殑绫诲瀷鍙傛暟鐨凾ype瀵硅薄鏁扮粍锛屾渶鍚庨€氳繃寮哄埗杞崲涓篊lass瀵硅薄鏉ヨ幏鍙栧埌娉涘瀷绫诲瀷鐨凜lass瀵硅薄銆?/p>

闇€瑕佹敞鎰忕殑鏄紝鍦ㄤ娇鐢ㄧ浜岀鏂瑰紡鑾峰彇娉涘瀷绫诲瀷鐨凜lass瀵硅薄鏃讹紝蹇呴』鍦ㄥ瓙绫讳腑瀹炵幇涓€涓棤鍙傜殑鏋勯€犳柟娉曪紝鍚﹀垯浼氭姏鍑篊lassCastException寮傚父銆?/p>

扫码添加客服微信