Rob*_*fat 4 java generics reflection
给出两个这样的类:
class Example1<A,B> {
public Map<A,B> someMap = new HashMap<A,B>();
}
class Example2 extends Example1<URL, URL> {
}
Run Code Online (Sandbox Code Playgroud)
有没有办法使用反射我可以确定Example2的Map的组件类型?
我知道我能做到:
ParameterizedType t = (ParameterizedType) Example2.class.getFields()[0].getGenericType();
Run Code Online (Sandbox Code Playgroud)
但是从那里,我似乎无法弄清楚这两个组件是URL.
有没有人有任何想法?
达隆并不完全正确.以下将打印出您想要的内容:
ParameterizedType superClass = (ParameterizedType) Example2.class.getGenericSuperclass();
System.out.println(superClass.getActualTypeArguments()[0]);
System.out.println(superClass.getActualTypeArguments()[1]);
Run Code Online (Sandbox Code Playgroud)
打印出来:
class java.net.URL
class java.net.URL
Run Code Online (Sandbox Code Playgroud)