Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当类存储在数组中时,Java返回数据类型_Java_Generics_Arraylist - Fatal编程技术网

当类存储在数组中时,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值