【问题标题】:How to override java list methods?如何覆盖java列表方法?
【发布时间】:2016-04-25 12:35:40
【问题描述】:

我正在开发一个 java 项目,我需要使用我创建的不同类型的列表(例如学生、学校...)。

问题是我需要对这种类型(或类)使用一些列表方法,例如 Ex ... 的“包含”...

我尝试通过创建我自己的从 java 列表扩展的列表(数组列表或向量)来覆盖这些方法......但我有很多问题,因为我想使用这个具有不同类型的新列表(我的列表)。

这是我从 java 列表扩展 myList 的方式:

public class myList extends ArrayList<Object>{

public myList() {
}
    /***methods***/
}

这就是我使用它的方式:

public class newclass(){
       .
       .
       .
    myList<student> sl=new myList<student>();
       .
       .

但它不起作用。那么正确的做法是什么。

谢谢。

【问题讨论】:

  • 两个侧节点。类确实以遵循 java 命名约定的大写字母开头。其次,不要通过将泛型定义为Object 来使这个自定义List 成为原始类型,这只会在以后造成麻烦(这也是你的问题)。让它MyList&lt;T&gt; extends ArrayList&lt;T&gt;
  • Extending Generic Classes的可能重复
  • 我不知道我是否理解正确,但也许您需要的只是在您的对象中实现可比较,因此 sort 和其他方法有效...参考:stackoverflow.com/a/3718515/2101088

标签: java list class methods overriding


【解决方案1】:

你要找的是Generics:

public class myList<T> extends ArrayList<T> {
...
}

这样你就可以像这样创建你自己想要的任何东西的列表:

myList<student> sl = new myList<>();

回复更新:

如何让 get -for example- 在声明中返回相同的类型 - 而不是 Object 类型

回复您的列表

myList<student> sl = new myList<>();
sl.add(new student());
student s = sl.get(0);

回复ArrayList

// But it works also with an ArrayList which implicitly mean that you have no need 
// to create your own implementation of an ArrayList
List<student> sl = new ArrayList<>();
sl.add(new student());
student s = sl.get(0);

【讨论】:

  • 您能否为类型(对象)student 编写覆盖的 contain,该类型由 String firstName ; String lastName; 定义。
  • 能否请您澄清一下我不明白您的问题
  • 您无需重写 contains 方法,只需在您的班级学生中正确实现您的 equals 方法
  • 我想重写 list (contain,get ...) 的方法来处理不同类型的对象(即如何使 get -例如 - 在声明中返回相同的类型 -这是 &lt;student&gt; 而不是 Object) 类型,那么该怎么做呢?! @NicolasFilotto
  • 也许您想通过添加 public boolean contains(T element) 来重载,然后您的类定义将类似于 public class myList extends ArrayList
猜你喜欢
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-13
  • 2020-01-30
  • 2015-08-18
相关资源
最近更新 更多