在Java中,我如何构造一个Type对象Map<String, String>?
System.out.println(Map<String, String>.class);
Run Code Online (Sandbox Code Playgroud)
不编译.我能想到的一个解决方法是
Map<String, String> dummy() { throw new Error(); }
Type mapStringString = Class.forName("ThisClass").getMethod("dummy", null).getGenericReturnType();
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
public class Test {
public Map<String, String> dummy;
public static void main(String... args) throws SecurityException,
NoSuchFieldException {
Type mapStringString = Test.class.getField("dummy").getGenericType();
// ...
Run Code Online (Sandbox Code Playgroud)
是一个稍微不那么丑陋的黑客..
正如Tom Hawtin建议的那样,您可以自己实现这些方法:
Type mapStrStr2 = new ParameterizedType() {
public Type getRawType() {
return Map.class;
}
public Type getOwnerType() {
return null;
}
public Type[] getActualTypeArguments() {
return new Type[] { String.class, String.class };
}
};
Run Code Online (Sandbox Code Playgroud)
返回与声明的方法的其他方法相同的值ParameterizedType.第一种方法的结果甚至是.equals这种类型.(但是,这种方法不会覆盖toString,equals等等,因此根据您的需要,第一种方法可能仍会更好.)
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |