gpt4 book ai didi

java - 创建对应泛型类型的Type对象

转载 作者:搜寻专家 更新时间:2023-10-31 19:50:40 24 4
gpt4 key购买 nike

在 Java 中,我如何构造一个 Type Map<String, String> 的对象?

System.out.println(Map<String, String>.class);

不编译。我能想到的一种解决方法是

Map<String, String> dummy() { throw new Error(); }
Type mapStringString = Class.forName("ThisClass").getMethod("dummy", null).getGenericReturnType();

这是正确的方法吗?

最佳答案

public class Test {
public Map<String, String> dummy;
public static void main(String... args) throws SecurityException,
NoSuchFieldException {
Type mapStringString = Test.class.getField("dummy").getGenericType();
// ...

是一个稍微不那么丑陋的 hack..


正如 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 };
}
};

返回与在 ParameterizedType 中声明的方法的其他方法相同的值。第一种方法的结果甚至是 .equals 这种类型。 (但是,这种方法不会覆盖 toString、equals 等,因此根据您的需要,第一种方法可能仍然更好。)

关于java - 创建对应泛型类型的Type对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2989055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com