gpt4 book ai didi

java - 如何返回参数化类型的类类型

转载 作者:行者123 更新时间:2023-12-02 12:39:04 25 4
gpt4 key购买 nike

我的第一次尝试是这样的:

@Override
public Class<? extends Set<Measurement>> getType() {
Set<Measurement> s = new HashSet<Measurement>();
return s.getClass();
}

但它无法编译:

incompatible types: java.lang.Classjava.util.Set cannot be converted to java.lang.Class*? extends java.util.Set*mydomain.Measurement**

我的第二次尝试:

@Override
public Class<? extends Set<Measurement>> getType() {
return Set<Measurement>.class;
}

仍然无法编译:

Cannot select from parameterized type

最佳答案

好吧,您可以通过扩展通用类来做到这一点。这将允许编译器保留类型信息。

public class So45012361Application {

public class Measurement {}

public class MeasurementsSet extends HashSet<Measurement> {}

public Class<? extends Set<Measurement>> getType() {
MeasurementsSet ms = new MeasurementsSet();
return ms.getClass();
}

public static void main(String[] args) {
System.out.println(new So45012361Application().getType()); //class com.stackoverflow.So45012361Application$MeasurementsSet
System.out.println(new So45012361Application().getType().getGenericSuperclass()); //java.util.HashSet<com.stackoverflow.So45012361Application$Measurement>
}
}

关于java - 如何返回参数化类型的类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45012361/

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