【问题标题】:Why i cant reach instance of object in object array?为什么我无法到达对象数组中的对象实例?
【发布时间】:2018-11-19 12:03:56
【问题描述】:

我开始学习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); 
}

【问题讨论】:

  • 你遇到了什么错误?
  • 你应该将objects声明为People[]
  • 无法解析符号,但没有意义
  • 感谢您的快速接受!
  • 这不是直接你的问题;但是this.name = lastName; 应该this.lastName = lastName; - 这种错误很难找到。

标签: java arrays object instance-variables


【解决方案1】:

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

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

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

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

而且不相关:人暗示复数。你应该把这个类叫做 Person,或者 PersonInfo。

【讨论】:

    【解决方案2】:

    这里,Object[] objectsObject 的数组,而 Object 类没有像 lastName 这样的东西。有两种方法可以解决问题。

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

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

    【讨论】:

      猜你喜欢
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 2019-10-17
      • 2014-04-24
      • 1970-01-01
      • 2020-04-16
      • 2020-08-10
      • 2017-04-06
      相关资源
      最近更新 更多