方法接受List <string>,需要返回List <string>的相同实现

时间:2018-05-10 20:15:46

标签: java list inheritance interface

我有一个方法需要接受List的任何实现,创建相同实现的newList,然后返回newList。我想弄清楚如何确保newListList的{​​{1}}具有相同的实现效果。请参阅附带的代码:

input

我可以重载static List<String> get(List<String> input){ // do some stuff List<String> newList = new (?????); // do some stuff with newList return newList; } ArrayListLinkedList等方法,但我想知道是否可以在不重复一堆代码的情况下完成此操作。

1 个答案:

答案 0 :(得分:4)

您可以尝试这样的事情

static List<String> get(List<String> input){
  // do some stuff
  List<String> newList = (List<String>)input.getClass().newInstance();
  // do some stuff with newList
  return newList;
}

input.getClass()将返回实际的运行时实现类型。

但这可能并不总是有效:

  1. 实施可能没有可访问的构造函数
  2. 可能没有no-args构造函数
  3. 你必须自己反省所有问题
  4. 我不知道的更多可能的麻烦
  5. 一般来说,不要这样做。不要坚持实施。