为什么我无法访问对象数组中的对象实例?
Why i cant reach instance of object in object array?
我开始学习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);
}
简单:您声明了 Object.
类型的数组
对象没有名字,只有 People 的实例有!
换句话说:你想声明一个人的数组,而不是对象。
你看,编译器只 "remembers" 变量声明左侧使用的类型。它不知道您实际上创建了一个 Object 数组,并在该数组中仅放置了 People 实例。
与此无关:people 表示复数。您应该称其为 class Person,或者 PersonInfo。
这里,Object[] objects
是一个 Object
的数组,对象 class 没有 lastName
之类的东西。有两种方法可以解决这个问题。
将数组声明为People[] objects
或
将对象投给喜欢((People)objects[0]).lastName
的人
我开始学习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);
}
简单:您声明了 Object.
类型的数组对象没有名字,只有 People 的实例有!
换句话说:你想声明一个人的数组,而不是对象。
你看,编译器只 "remembers" 变量声明左侧使用的类型。它不知道您实际上创建了一个 Object 数组,并在该数组中仅放置了 People 实例。
与此无关:people 表示复数。您应该称其为 class Person,或者 PersonInfo。
这里,Object[] objects
是一个 Object
的数组,对象 class 没有 lastName
之类的东西。有两种方法可以解决这个问题。
将数组声明为
People[] objects
或将对象投给喜欢
((People)objects[0]).lastName
的人