【发布时间】:2013-06-03 07:39:05
【问题描述】:
List listofinteger 是 Integer 类型,但接受字符串对象,当我检查 instance of Integer 时,它给出的是真的,太奇怪了,谁能解释发生了什么。
我所知道的是,当我将 List listofinteger 发送到方法时,它会引用无类型的 List 引用变量,当我添加它时,它会将输入作为字符串,现在当我将 List listofanything 返回到 @987654326 @ ,它应该是因为它是一个参考。
现在,但我检查 instanceof,它正在为 Integer 打印 true,但它是 String。
import java.util.ArrayList;
import java.util.List;
public class TestEx {
List<Integer> listofinteger=new ArrayList<Integer>(); //list of integer type
public static void main(String... args)
{
TestEx f=new TestEx();
f.listofinteger.add(123); //adds integer by wrapping it(auto)
f.listofinteger=f.addelement(f.listofinteger);
if(f.listofinteger.get(1) instanceof Integer);
{
System.out.println("true"); //prints true here
System.out.println(f.listofinteger.get(1));
}
}
List<Integer> addelement(List listofanything)
{
listofanything.add("asdasdasd"); //adding String object
return listofanything;
}
}
我知道这里的方法addelement(List listofanything )应该被赋予一个整数类型,但我在这里测试它,以了解泛型的概念
【问题讨论】:
-
if(f.listofinteger.get(1) instanceof Integer);
-
@VJD:那是代码的问题,您应该将其发布为答案。
-
哦,分号是对的:/
-
@VJD 它是一个分号问题,好吧,我有另一个疑问,为什么它实际上允许一个字符串,如果 Java 开发人员认为它会阻止将任何对象添加到列表中的问题,那么在首先,他们允许成为某种类型的列表,以引用简单类型的列表
-
@anshulkatta 好吧,您不是将它添加到整数列表而是列表,它将允许您添加它,尝试将 listofanything 从 List 更改为 List
并检查
标签: java string list generics integer