所以我有一张地图:
Map<String, Class> format = new HashMap<String, Class>();
我会像这样添加元素:
format.put("Vendor Number", Integer.class);
format.put("Vendor Dispatch", Date.class);
....
我有如下通用方法:
public static <T> T verifyType(String name, Class<T> type) {
if (type == Integer.class) {
return type.cast(new Integer(Integer.parseInt(name)));
}
......
return null;
}
现在,这段代码可以很好地工作,并且没有编译器问题:
Integer i = verifyType("100",Integer.class);
但是,当我尝试这样做时:
Integer i = verifyType("100",format.get("Vendor Number"));
OR
Class type = Integer.class
Integer i = verifyType("100",type);
编译器向我显示以下警告:类型安全:通用方法verifyType(String,Class)的未经检查的调用verifyType(String,Class)
这让我感到困惑…请帮助…
更改:
Class type = Integer.class
Integer i = verifyType("100",type);
至
Class<Integer> type = Integer.class
Integer i = verifyType("100",type);
通过仅将类型声明为“ Class”,就失去了通用参数,并且verifyType()方法无法推断出该类,因此产生了未经检查的警告。
这个问题:
Map<String, Class> format = new HashMap<String, Class>();
format.put("Vendor Number", Integer.class);
format.put("Vendor Dispatch", Date.class);
Integer i = verifyType("100",format.get("Vendor Number"));
由于类型擦除,无法真正解决。编译器无法基于运行时使用的通用参数来推断类型。这是因为Java泛型只不过是用于转换的烟雾和镜像。
问题内容: 我想拥有一个Class对象,但是我想强迫它代表的任何类扩展A类并实现接口B。 我可以: 要么: 但我不能两者都做。有没有办法做到这一点? 问题答案: 实际上,你可以做你想做的事。如果要提供多个接口或一个类加接口,则必须使通配符看起来像这样: 请参见sun.com上的泛型教程,特别是页面底部的“ 绑定类型参数”部分。实际上,如果需要,你可以列出多个接口,并& InterfaceName根
问题内容: 我为缓存编写了一个函数来检索特定对象。这样我就不需要投了。 我正在这样使用 但是现在我的缓存中有一个字符串列表,我不能这样使用 问题是。我对Java非常陌生,我该怎么写? 问题答案: 您无法获得的类,在您的情况下,唯一的方法是:
我正在尝试用来自spring WebFlux的WebClient制作一个客户端库。 服务器返回如下JSON所示的响应: 结果字段包含元素数组,这些元素可以根据使用的API而不同。 有关该API的更多信息,请参阅ServiceNow产品中的表API。 正如您在文档中所看到的,API路径如下所示:GET/now/table/{tableName},其中tableName可以是不同的值,tipology
在java 8中创建新代码后,我想清除声纳问题。 我的代码: 声纳说: Lambda应该替换为方法引用。方法/构造函数引用比使用lambda更紧凑和可读性,因此是首选。同样,空检查可以替换为对Object::isNull和Object::nonNull方法的引用。 我想要更改映射(arg-
问题是: 创建一个名为Duo的泛型类,它有两个参数a和B。声明一个名为a类型的第一个变量,以及一个名为B类型的第二个变量。创建一个接受这两个参数的构造函数。在构造函数中,将这些参数分别分配给声明的变量。 这是我能想到的解决方案: 然后,当我继续问下一个问题时,我被绊住了。问题是: 使用问题4中的Duo类声明并创建两个对象,如下所示: a) 第一个名为sideShape的对象分别由字符串类型和整数类
我试图在一个方法中使用泛型,在这个方法中,我将一个json反序列化为pojo,这样它就可以返回任何对象类型。 这里我的代码: 问题是