java ParameterizedType 사용

1820 단어
java ParameterizedType  
package com.tencent.weread.dict;

import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;

public class Main {
	public static void main(String[] args) throws NoSuchMethodException {
		new Sub();
	}
}

class Parent {

}

class Child extends Parent {

}

class UpperGeneric {
	static class Generic {
		T t;
		R r;

		protected Generic(T t, R r) {
			this.t = t;
			this.r = r;
		}

		void foo() {
			System.err.println(t + " " + r);
		}
	}
}

class Sub extends UpperGeneric.Generic {

	protected Sub() {
		super(new Child(), 1);
		Class clazz = getClass().getSuperclass();
		System.err.println("super clazz:" + clazz);

		Type type = getClass().getGenericSuperclass();
		System.err.println("generic super class type:" + type);

		Type trueType = ((ParameterizedType) type).getActualTypeArguments()[0];
		System.err.println("generic super class type:" + trueType);
		trueType = ((ParameterizedType) type).getActualTypeArguments()[1];
		System.err.println("type:" + trueType);

		trueType = ((ParameterizedType) type).getRawType();
		System.err.println("raw type:" + trueType);

		trueType = ((ParameterizedType) type).getOwnerType();
		System.err.println("owner type:" + trueType);
	}
}

getOwner Type: type 의 포장 류 를 가 져 옵 니 다.type 이 어떤 종류의 내부 클래스 가 아니라면 null 로 돌아 갑 니 다. 그렇지 않 으 면 외부 클래스 의 Type 으로 돌아 갑 니 다.
getActualTypeArguments:          

좋은 웹페이지 즐겨찾기