【问题标题】:Printing Single Item from ArrayList Created in Another Generic Class?从另一个泛型类中创建的 ArrayList 打印单个项目?
【发布时间】:2015-12-03 05:13:40
【问题描述】:

试图了解 Java 中的泛型。我使用非泛型方法创建了一个 ArrayList 并将它们打印出来,使用通常的 array.get(index) 一切正常,但是当我使用泛型创建列表时,get 方法不起作用。我可以很好地打印整个列表,但我想挑选出单个元素。我尝试了一些不同的方法,这些方法可能使代码有点混乱,对此我深表歉意。我知道事情可能会以更简单的方式完成,我只是想了解 Java 中的泛型,我遇到了这个问题。我看过几个不同的视频并找到了几个例子,所以我可能试图以不正确的方式将两个概念放在一起。试图研究,找不到答案。

第一个类 Generic.java 是创建泛型 ArrayList。

import java.util.ArrayList;
import java.util.List;

public class Generic<T> {

private ArrayList<T> data;

    public Generic() {
        data = new ArrayList<T>();
    }

    public void add(T element){
        data.add(element);
    }

    //Not even sure if I need these get/set but I put them in there for testing
    public ArrayList<T> getData() {return data;}

    public void setData(ArrayList<T> data) {this.data = data;}

    public String toString(){
        return data.toString();
    }
}

第二类是主要的测试类:

import java.util.ArrayList;
import java.util.List;


public class Test {

    public static void main(String[] args) {

        List nonGenericList = new ArrayList();
        nonGenericList.add("Enzo");
        nonGenericList.add(458);
        String nonGen1 = (String) nonGenericList.get(0);
        Integer nonGen2 = (Integer) nonGenericList.get(1);

        System.out.println(nonGen1);
        System.out.println(nonGen2);


        Generic<Object> genericList = new Generic<>();
        genericList.add("Enzo");
        genericList.add(458);

        //This is where the .get(0) isn't working for me
        System.out.println(genericList.get(0));
    }
}

感谢您的帮助!

【问题讨论】:

  • @3kings 是的,方法未定义。我以前从未定义过get方法,我该怎么做?

标签: java generics arraylist


【解决方案1】:

您的Generic&lt;T&gt; 类没有get(int index) 方法,如果您想调用它,您应该创建该方法...

尝试将此添加到您的 Generic&lt;T&gt; 课程中

public T get(int index){
    return data.get(index);
}

【讨论】:

  • 谢谢,成功了。我以前从来没有定义过那种方法,没想到在这里做。谢谢!
【解决方案2】:

您可以在 Generic 类中定义这样的 get 方法:

   public T get(int i) {return data.get(i);}

【讨论】:

    【解决方案3】:

    您没有定义 getData() 方法的 add 方法, 所以写

    ArrayList a=genericList.getData();
    System.out.println(a.get(0));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 2020-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      相关资源
      最近更新 更多