如何在java中为列表分配对象类型?

假设我有一堂课:


class Person{

  String name = "";

  int age = 0;

  Person(String name, String age){

    this.name = name;

    this.age = age;

  }

}


我实现了自己的 List 但我不知道如何像传统的 List 那样指定对象类型:List<Person>。如果我让默认类为&ldquo;对象&rdquo;,它可以工作,但我无法从我的对象访问变量和方法。例如,print( list.get(0) )将显示我的对象的引用,但 print( list.get(0).name ) 它不起作用。我希望我的列表适用于任何课程。


这就是我声明我的实施列表的方式:


List list = new List();

list.add( new Person("Andrei", 19) );

吃鸡游戏
浏览 129回答 3
3回答

胡说叔叔

您应该使您的 LinkedList 成为通用的,同时也使嵌入的 Node 成为可能,这样您就可以将 Node 中的数据字段定义为您传递的类型的实例:class Node<T>{&nbsp; &nbsp; T data;// Object data&nbsp; &nbsp; Node next;&nbsp; &nbsp; Node(T d){&nbsp; &nbsp; &nbsp; &nbsp; this.data = d;&nbsp; &nbsp; &nbsp; &nbsp; this.next = null;&nbsp; &nbsp; }}public class LinkedList<T> {&nbsp; &nbsp; Node<T> first = null;&nbsp; &nbsp; Node<T> last = null;&nbsp; &nbsp; // TODO change all your methods to accept value of type T instead of Object}

侃侃无极

你的列表类应该使用泛型public class MyList<T> {&nbsp; &nbsp; public T getAtIndex(int i) {&nbsp; &nbsp; &nbsp; &nbsp; return ...;&nbsp; &nbsp; }}然后你可以创建一个这样的MyList<Person> = new MyList<Person>();我还建议扩展列表public class MyList<T> extends List<T>其中提供了get等标准方法@Overridepublic T get(int index) {&nbsp; &nbsp; return ...;}

一只甜甜圈

您的LinkedList课程不是通用的。要使其通用,您可以按如下方式定义它......public class LinkedList<T> {}但是,由于您的LinkedList类仅包含Nodes,因此您应该只使您的Node类通用。就像是...class Node<T> {    T data;    Node next;    Node(T d){        this.data = d;        this.next = null;    }}然后你可以像这样创建一个人...... NodeNode<Person> personNode = new Node<>(new Person("George", 20));顺便说一下,我建议重命名你的类,因为标准 java 类库中LinkedList已经有这样一个类。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java