当类存储在数组中时,Java返回数据类型
这是我的示例类当类存储在数组中时,Java返回数据类型,java,generics,arraylist,Java,Generics,Arraylist,这是我的示例类 公共类值{ 公共最终价值; 公共价值(E值){ 这个值=值; } } 这会返回一个字符串,没有对象,所以我不需要强制转换它 String a = new Value<String>("test").value; ArrayList<Value<?>> a = new ArrayList<>(); a.add(new Value<String>("test")); String b = a.get(0).value;
公共类值{
公共最终价值;
公共价值(E值){
这个值=值;
}
}
这会返回一个字符串,没有对象,所以我不需要强制转换它
String a = new Value<String>("test").value;
ArrayList<Value<?>> a = new ArrayList<>();
a.add(new Value<String>("test"));
String b = a.get(0).value; // Runtime error
字符串a=新值(“测试”)。值;
然而,如果我想这样做,那么我需要投下它
String a = new Value<String>("test").value;
ArrayList<Value<?>> a = new ArrayList<>();
a.add(new Value<String>("test"));
String b = a.get(0).value; // Runtime error
ArrayList替换
ArrayList<Value<?>> a = new ArrayList<>();
ArrayList你不能。您定义了您不知道(或不关心)包含在Value
中的类型,因此您只能将它们视为Object
,因为这是它们的唯一保证(它们也可以是子类,但也始终是Object
)
如果您认为并希望可以将字符串
s和整数
s存储在同一个列表
,除非将它们视为对象
,否则这是不可能的。此外,您不应该在同一个集合中存储不同的类型(通过继承层次结构除外)。这是否回答了您的问题?关键是,我还希望值是一个整数,并将数据类型存储在对象value
中,编译器如何知道您添加的第一个值对象包含一个整数,第二个值对象包含一个字符串?这是不可能的。我认为它能够返回正确的数据类型,因为公共的最终E值如果不可能,我想我需要使用instanceof,然后将其强制转换。非常感谢。