为什么我无法到达对象数组中的对象实例?

时间:2018-06-09 18:32:31

标签: java arrays object instance-variables

我开始学习java,当我能够访问对象名和lastName时遇到这个问题,但是如果我把它们放在对象数组中就无法达到。

public class Human {
    String name;
    String lastName;
    String[] people;

    People(String name, String lastName) {
        this.name = name;
        this.lastName = lastName;
    };

    public static People tom = new People("Tom", "Tommy");
    public static People ted = new People("Ted", "Teddy");

    public static Object[] objects = {
            tom,
            ted
    };
    public static void main(String[] args) {
        System.out.println(tom.lastName);
        System.out.println(objects[0]);

我需要的这条线不起作用。

        System.out.println(objects[0].lastName); 
}

2 个答案:

答案 0 :(得分:3)

简单:您声明了 Object

类型的数组

对象没有名称,只有People的实例!

换句话说:你想要声明一个People数组,而不是Object。

你看,编译器只“记住”该变量声明左侧使用的类型。它不知道你实际上创建了一个Object数组,并且只在这个数组中放置了People的实例。

无关:人们暗示复数。您应该调用该类Person,或者PersonInfo。

答案 1 :(得分:3)

此处,Object[] objectsObject的数组,而Object类没有lastName之类的数组。有两种方法可以解决问题。

  1. 将数组声明为People[] objects

  2. 将对象投放到像((People)objects[0]).lastName

  3. 这样的人