java - 如何将泛型添加到我的代码中

标签 java generics

我需要为我的 nestList 使用泛型。我可以使用什么语法来将 IntegerString 列表添加到嵌套列表以及任何其他类型的列表中?

    // integer list
    List<Integer> listInteger = new ArrayList<Integer>(Arrays.asList(1, 2));

    // string list
    List<String> listString = new ArrayList<String>(Arrays.asList("abc", "xyz"));

    // nested lists.
    List nestedList = new ArrayList();
    nestedList.add(listInteger);
    nestedList.add(listString);
    nestedList.add("A");

最佳答案

因为你想存储列表和非集合对象(“A”)你应该在你的集合中存储对象,比如:

import java.util.*;


public class Main {
    public static void main(String[] args)
    {
        // integer list
        List<Integer> listInteger = new ArrayList<Integer>(Arrays.asList(1, 2));

        // string list
        List<String> listString = new ArrayList<String>(Arrays.asList("abc", "xyz"));

        // nested lists.
        List<Object> nestedList = new ArrayList<Object>();
        nestedList.add(listInteger);
        nestedList.add(listString);
        nestedList.add("A");
    }
}

请注意 List<Object>只是为了避免编译器提示您的集合没有类型。实际上,List<Object>List是一样的。

你可以使用这个来抑制警告:

import java.util.*;


public class Main {

    @SuppressWarnings({"rawtypes", "unchecked"})
    public static void main(String[] args)
    {
        // integer list
        List<Integer> listInteger = new ArrayList<Integer>(Arrays.asList(1, 2));

        // string list
        List<String> listString = new ArrayList<String>(Arrays.asList("abc", "xyz"));

        // nested lists.
        List nestedList = new ArrayList();
        nestedList.add(listInteger);
        nestedList.add(listString);
        nestedList.add("A");
    }
}

但总的来说,解决方案并不好。 我没有您的所有要求,但更好的主意是有一个对象来存储您所有的集合和对象。您的代码会更干净,并且没有 @SuppressWarnings,这被认为是不好的。

类似于:

MyObj myobj = new MyObj();
nestedList.setIntegers(listInteger);
nestedList.setStrings(listString);
nestedList.setSomeProperty("A");

关于java - 如何将泛型添加到我的代码中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24643631/

相关文章:

java - 转换表单 2012,12,06,18,00,00 上的字符串以创建新的公历

java - 获取和更新单个谷歌工作表中的单元格(电子表格中的特定工作表)

java - 通过循环使用 Hashmap 值

java - 在 Freemarker 中将 java.lang.Iterable 视为 #list 表达式

java - 将数组中的所有零移至前面或后面

c# - 如何从泛型方法访问类的属性 - C#

java - 通用构造函数 (Class<T> clazz) 不支持 T,其中 T 是另一个泛型

Java map 通用

java - 编译器认为 Comparable 类型不是 Comparable

c# - 使用 String.IsNullOrEmpty(string) 和 Nhibernate 创建动态 Linq 表达式