1

我开始学习java,当我可以到达对象名称和姓氏时遇到了这个问题,但是如果我把它们放在对象数组中就无法到达。

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); 
}
4

2 回答 2

3

很简单:你声明了Object类型的数组。

对象没有名字,只有 People 的一个实例有!

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

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

并且不相关:人意味着复数。你应该称这个类为 Person,或者 PersonInfo。

于 2018-06-09T18:36:14.513 回答
3

在这里,Object[] objects是一个数组,Object而 Object 类没有类似lastName. 有两种方法可以解决问题。

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

  2. 将对象投射给喜欢的人((People)objects[0]).lastName

于 2018-06-09T18:36:37.637 回答