创建不同的对象实例列表(Creating instance list of different ob

2019-07-30 00:01发布

我特林创建不同类实例的ArrayList。 我怎样才能创建一个没有定义一个类类型的列表? (<Employee>)

List<Employee> employees = new ArrayList<Employee>();
employees.add(new Employee());
Employee employee = employees.get(0);

Answer 1:

你可以创建这样的对象名单List<Object> list = new ArrayList<Object>() 由于所有的类实现扩展从隐性或显性java.lang.Object类,这个名单可以容纳任何对象,包括实例EmployeeIntegerString等。

当您从该列表中检索元素,你将被检索的Object ,并不再是一个Employee ,这意味着你需要在这种情况下进行显式转换,如下所示:

List<Object> list = new ArrayList<Object>();
list.add("String");
list.add(Integer.valueOf(1));
list.add(new Employee());

Object retrievedObject = list.get(2);
Employee employee = (Employee)list.get(2); // explicit cast


Answer 2:

List<Object> objects = new ArrayList<Object>();

objects名单将接受任何的Object

你可以设计类似如下

public class BaseEmployee{/* stuffs */}

public class RegularEmployee extends BaseEmployee{/* stuffs */}

public class Contractors extends BaseEmployee{/* stuffs */}

在列表

List<? extends BaseEmployee> employeeList = new ArrayList<? extends BaseEmployee>();


Answer 3:

List anyObject = new ArrayList();

or

List<Object> anyObject = new ArrayList<Object>();

现在anyObject可以持有objects of any type

使用instanceof来知道what kind of object it is



Answer 4:

如果你不能比更具体Object与你的情况下,然后使用:

List<Object> employees = new ArrayList<Object>();

否则,越具体,您可以:

List<? extends SpecificType> employees = new ArrayList<? extends SpecificType>();


Answer 5:

我相信你最好的拍摄是申报表作为对象的列表:

List<Object> anything = new ArrayList<Object>();

然后,你可以把任何你想要的话,这样的:

anything.add(new Employee(..))

显然,你不能没有正确的铸造读什么出格的名单:

Employee mike = (Employee) anything.get(0);

我不鼓励使用原始类型,如:

List anything = new ArrayList()

由于仿制药的整个目的正是为了避免这些,在未来的Java可能不再询问服务生类型,原始类型被认为是旧的,一旦你使用原始类型,你不能在一个给定的参考,在所有使用泛型。 例如,看看这一个另一个问题: 结合原始类型和泛型方法



Answer 6:

我怎样才能创建一个没有定义一个类类型的列表? ( <Employee>

如果我正确地读这篇文章,你只是想避免指定类型,是否正确?

在Java 7中,你可以做

List<Employee> list = new ArrayList<>();

但任何正在讨论的其他选择的只是要牺牲类型安全。



文章来源: Creating instance list of different objects