为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

吃鸡游戏 2023-06-08 21:00:44
假设我有一堂课: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) );
查看完整描述

3 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

您应该使您的 LinkedList 成为通用的,同时也使嵌入的 Node 成为可能,这样您就可以将 Node 中的数据字段定义为您传递的类型的实例:


class Node<T>{

    T data;// Object data

    Node next;


    Node(T d){

        this.data = d;

        this.next = null;

    }

}

public class LinkedList<T> {

    Node<T> first = null;

    Node<T> last = null;

    // TODO change all your methods to accept value of type T instead of Object

}


查看完整回答
反对 回复 2023-06-08
?
侃侃无极

TA贡献2051条经验 获得超10个赞

你的列表类应该使用泛型


public class MyList<T> {

    public T getAtIndex(int i) {

        return ...;

    }

}

然后你可以创建一个这样的


MyList<Person> = new MyList<Person>();

我还建议扩展列表


public class MyList<T> extends List<T>

其中提供了get等标准方法


@Override

public T get(int index) {

    return ...;

}


查看完整回答
反对 回复 2023-06-08
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

您的LinkedList课程不是通用的。要使其通用,您可以按如下方式定义它......


public class LinkedList<T> {

}

但是,由于您的LinkedList类仅包含Nodes,因此您应该只使您的Node类通用。就像是...


class Node<T> {

    T data;

    Node next;


    Node(T d){

        this.data = d;

        this.next = null;

    }

}

然后你可以像这样创建一个人...... Node


Node<Person> personNode = new Node<>(new Person("George", 20));

顺便说一下,我建议重命名你的类,因为标准 java 类库中LinkedList已经有这样一个类。


查看完整回答
反对 回复 2023-06-08
  • 3 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信