2017-05-11 263 views
0

问题的基本原因在于此,我们创建了一个对象ArrayLists数组,因为我们不完全知道我们将在那里保存什么,直到后来,但我们知道如何(我们必须使它),所以构造函数方法的默认创建将其初始化为
private List<Object> collection但后来某些输入会改变它,将其称为字符串,因此位置上的AL应该类似collection[i] = new ArrayList<String>(),但编译器说甚至连ArrayList<String> cannot be converted into ArrayList<Object>以为我很确定String,Integer等从类继承Object
任何人都可以告诉我我做错了什么?更改ArrayList的类型

+0

'collection [i]'是什么?只需向集合添加' –

+0

集合[]是将用ArrayLists填充的数组,但它们拒绝更改类型 –

+0

为什么不将'List '更改为'列表'?或'ArrayList '到'ArrayList '?它们需要是相同的类型,否则你需要使用边界,比如'List <?扩展Object>'。 – 4castle

回答

0

1)collection[i]是一个Array

2)如果你想它这样写:

List<Object> collection; collection = new ArrayList<String>();

,你会得到incompatible types: ArrayList<String> cannot be converted to List<Object>

你不能隐蔽字符串目的。如果你想要它,你需要将它创建为一个字符串列表。如果你不知道你需要什么类型,只要你知道就可以创建它。如果用户选择它,请按如下方式进行切换:

switch (entry) { 
     case 1: { 
      List<String> collection = new ArrayList<>(); 
      break; 
     } 
     case 2: { 
      List<Integer> collection = new ArrayList<>(); 
      break; 
     } 
     case 3: { 
      List<Character> collection = new ArrayList<>(); 
     } 

    }