【问题标题】:How to add generic object to list in java?如何在java中将通用对象添加到列表中?
【发布时间】:2019-04-01 13:52:24
【问题描述】:

如何在 java 中添加一个泛型对象到列表中?

目前,我有两个类执行相同的功能,并希望将它们集成在一起

public class MyClass1 {
    private List<Object1> myList = new ArrayList<>();

    public void addList(Object1 o) {
        myList.add(o);
    }
} 

public class MyClass2 {
    private List<Object2> myList = new ArrayList<>();

    public void addList(Object2 o) {
        myList.add(o);
}
} 

类似

public class MyClass {
    private List<Object> myList = new ArrayList<>();

    public void addList(Object o) {
        myList.add(o);
    }
} 

【问题讨论】:

    标签: java generics collections


    【解决方案1】:

    你可以让你自己的类通用:

    public class MyClass<T> {
        private List<T> myList = new ArrayList<>();
    
        public void addList(T o) {
            myList.add(o);
        }
    } 
    

    【讨论】:

      【解决方案2】:

      如果您希望该类仅包含 Object1 或仅包含 Object2 而不包含其他任何内容,您可以结合其他两个答案:

      interface ObjInterface {
          // may be empty
      }
      
      public class MyClass<T extends ObjInterface> {
          private List<T> myList = new ArrayList<>();
      
          public void addList(T o) {
              myList.add(o);
          }
      }
      
      MyClass<Object1> object1only = new MyClass<>();
      MyClass<Object2> object2only = new MyClass<>();
      

      并将implements ObjInterface添加到Object1和Object2的定义中。

      如果您将两个类共有的方法添加到ObjInterface,您可以在MyClass 中的T 对象上调用这些方法,因为它们保证是ObjInterface 的子类。

      【讨论】:

        【解决方案3】:

        您可以让Object1Object2 两个类实现相同的接口'ObjInterface'

        public class MyClass {
            private List<ObjInterface> myList = new ArrayList<>();
        
            public void addList(ObjInterface o) {
                myList.add(o);
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-31
          • 2021-03-28
          • 2019-04-02
          • 2011-11-25
          • 1970-01-01
          • 2021-06-20
          • 2017-06-16
          • 2013-11-06
          相关资源
          最近更新 更多