我正在尝试将对象添加到 ArrayList,在静态输入期间,它工作正常
class ArrayListDemo4
{
public static void main(String[] args)
{
Collection cl = new ArrayList();
cl.add(true);cl.add("Hello");cl.add(6.55f);cl.add(566);
out.println(cl);
for(Object o: cl)
System.out.println(o.getClass());
}
}
输出:
D:\COLLECTIONS>java ArrayListDemo4
[true, Hello, 6.55, 566]
class java.lang.Boolean
class java.lang.String
class java.lang.Float
class java.lang.Integer
当我尝试对运行时输入执行相同操作时,getClass() 仅以字符串形式给出。我注意到 next()
有 2 个具有不同返回类型的签名 public java.lang.String next()、public java.lang.Object next()
和通用控制台输入对象
class ArrayListDemo3
{
public static void main(String[] args)
{
Scanner input = new Scanner(in);
List cl = new ArrayList(4);
out.println("Enter the objects to the ArrayList:");
for (int i =0; i < 4; i++ )
{out.print("cl["+i+"] = "); cl.add((Object)input.next()); }
out.println(cl);
for(Object o: cl)
{out.println(o.getClass());}
}
}
输出:
Enter the objects to the ArrayList:
cl[0] = true
cl[1] = Hello
cl[2] = 6.55f
cl[3] = 566
[true, Hello, 6.55f, 566]
class java.lang.String
class java.lang.String
class java.lang.String
class java.lang.String
有人可以纠正/帮助我 - 如何获取运行时输入值的相应对象类型?
最佳答案
咨询java.util.Scanner
javadoc,你会发现next()
始终返回String
。
同时java.util.Scanner
有很多方法来获取特定类型的值:nextBoolean()
, nextByte()
等
此外,我强烈建议:不要使用原始类型的集合。 Java有相当好的泛型机制。所以,如果您正在学习过程中 - here是很好的入门资源。
关于java - ArrayList 对象运行时输入被视为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54750463/