Java:一般返回由参数指定的类型集
我希望有一个方法,可以创建指定接口的列表。我似乎不能得到它,这样我就不必投下或我失去了我的类型安全 此版本要求强制转换集合,并生成不安全类型强制转换警告:Java:一般返回由参数指定的类型集,java,generics,Java,Generics,我希望有一个方法,可以创建指定接口的列表。我似乎不能得到它,这样我就不必投下或我失去了我的类型安全 此版本要求强制转换集合,并生成不安全类型强制转换警告: public static Set<? extends Setting> getSettings(Class<? extends Setting> className){ Set<? extends Setting> result = new HashSet<>(); try {
public static Set<? extends Setting> getSettings(Class<? extends Setting> className){
Set<? extends Setting> result = new HashSet<>();
try {
Setting settingsObject = className.getDeclaredConstructor().newInstance();
// do something with it and populate result-set
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static void main(String[] args) {
Set<LiabilitySetting> liabilitySettings = (Set<LiabilitySetting>) getSettings(LiabilitySetting.class);
for (LiabilitySetting s: liabilitySettings) {
s.doSomething();
}
}
公共静态集改用有界类型参数
public static <T extends Setting> Set<T> getSettings(Class<T> className) {
publicstaticsetgetsettings(类名){
通配符?
告诉编译器它是设置
(或设置
本身)的某个子类,但编译器不知道类
中的?
是否与集中的?
相同
当您将它绑定到一个类型参数时,编译器仍然知道T
是Setting
或Setting
的子类,但现在它知道Set
和Class
具有相同的类型,因此不需要强制转换
public static <T extends Setting> Set<T> getSettings(Class<T> className) {