如何将数字放入通用列表中?

时间:2016-06-12 08:27:33

标签: java list generics arraylist

所以我制作了一个通用列表,如果我将它们转换为(T),它只接受字符串。这是我的代码:

Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run Left(WScript.ScriptFullName, InStrRev(WScript.ScriptFullName, "\")) & "test.bat"

当我想添加int 25时,即​​使我将其转换为(T),这也会给我一个错误。如果它是通用列表不应该采取我给它的任何东西?请帮助,提前谢谢

4 个答案:

答案 0 :(得分:2)

您无法将原始 int 转换为(T),尝试将整数转换为(T)

list.add((T)((Integer)25));

(由于automatic boxing,您可以将原始 int 转换为整数,如((整数)25)。)

答案 1 :(得分:0)

我认为你误解了'泛型'你的清单的一部分。你认为它是一个列表普通对象,它不是。这是一个' T'对象,其中T是Exercise04类的通用参数。

我想要存储一个&#39; stuff&#39;列表,如字符串和整数,您需要使用List<Object>

要将整数放入列表中,您可以执行以下操作:

List<Integer> iList = new ArrayList<>();
list.add(100);

因拳击而起作用。但是你不能把字符串放进去。

否则,&#39; T&#39;您的案例将由实例化您的Exercise04类的人定义。

答案 2 :(得分:0)

错误的原因是因为你以一种糟糕的方式实现泛型类......

如果你在一个好的IDE中编码,你应该至少得到一个警告,比如

  

Exersise04是原始类型。参考通用类型Exersise04   应该参数化

这是因为你定义了类泛型,但是你实现它就像:

public static void main(String[] args) {
    new Exersise04();
}

这意味着, Exersise04 不知道在宣布时持有什么......(不好,不好做法)

尝试改为

public class Exersise04<T> {

    public static void main(String[] args) {
    new Exersise04<String>();
    }

    public Exersise04() {
    List<T> list = new ArrayList<>();
    list.add((T) "Hello");
    list.add((T) 25);
    }
}

然后你会看到你的编译器会在这里抱怨 list.add((T) 25);因为现在我们都确定,这个类只保留允许String对象

  

无法从int转换为T

答案 3 :(得分:0)

你只需声明一个对象列表(所有对象的母亲)

List<Object> list = new ArrayList<Object>();
list.add((T)"Hello");
list.add((T)25);