gpt4 book ai didi

java - 如何在运行时设置泛型 Java 类的类型?

转载 作者:行者123 更新时间:2023-11-30 08:25:43 24 4
gpt4 key购买 nike

我目前遇到了 Java 泛型的问题,参数 T 的类型必须在运行时确定。

这是具有类型参数 T 的类:

public class Something<T> {
T value;

public Something(T value) {
this.value = value;
}

... //some other methods
}

这是另一个类中的一个方法,其中应该创建 Something 的实例,但是 T 的类型取决于给定对象的动态类型:

public void create(Object o) {

//this is not working, since there is no getType() method
Something<o.getType()> s = new Something();
}

有没有办法确定 o 的动态类型并将其作为类型参数传递给 Something 类?使用 instanceof 来使用 if 级联是不可取的,因为 o 有很多种可能性。

最佳答案

您可以通过 K 参数化 create() 方法(只是为了避免与 T 混淆)

public <K> void create(K o) {
Something<K> s = new Something<K>();
}

然后,当您多次调用 create() 方法时,会发生以下情况:

create(Object o)  -> will parametrize Something by Object

create(Integer i) -> will instantiate Something by Integer

关于java - 如何在运行时设置泛型 Java 类的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22046474/

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