作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是我的类 Person.java(已简化以删除我认为与问题无关的文本):
public class Person {
int myIdNumber;
String myName;
String myBirthday;
String myType;
Person(String forTheName, int forTheId, String forTheBirthday, String forTheType){
this.myIdNumber = forTheId;
this.myName = forTheName;
this.myBirthday = forTheBirthday;
this.myType = forTheType;
}
}
这里是 PersonAdd.java(同样经过简化):
import javax.swing.JOptionPane;
public class PersonAdd {
public static int numOfPeople = 0;
static String instruction = "Enter the person's ";
static String theName;
static String theBirthday;
static String theType;
static void entryText(){
numOfPeople++;
theName = JOptionPane.showInputDialog(null, instruction + "name.", "Add People", JOptionPane.QUESTION_MESSAGE);
theBirthday = JOptionPane.showInputDialog(null, instruction + "birthday.", "Add People", JOptionPane.QUESTION_MESSAGE);
theType = JOptionPane.showInputDialog(null, instruction + "type.", "Add People", JOptionPane.QUESTION_MESSAGE);
}
public static void main(String[] args) {
entryText();
Object person1 = new Person(theName, numOfPeople, theBirthday, theType);
entryText();
Object person2 = new Person(theName, numOfPeople, theBirthday, theType);
entryText();
Object person3 = new Person(theName, numOfPeople, theBirthday, theType);
String response = person1.myName;
JOptionPane.showMessageDialog(null, response);
}
}
预期的结果是最后一个对话框显示给定的名称,但它不起作用,尽管我相信它存储了正确输入的数据。关键问题在线路上
String response = person1.myName;
无法解析或不是字段。如果我添加一个 get 方法并使用它而不是 myName,也会发生这种情况。 Eclipse 似乎甚至看不到 person1 的任何对象。
我敢肯定这与我未能理解继承、静态/非静态或其他方面有关。 (这种类和对象的东西对我来说特别难以掌握;我在“SQL 模式”下思考并希望能够说出类似“从哪里选择”的东西。)
最佳答案
您已将变量声明为 Object
类型,这是每个引用类型的基本类型,即。它是您的 Person
类的父类。
因此,您只能通过 Object
访问可用的字段和方法类型。
您需要将您的变量声明为 Person
类型
Person person1 = new Person(...);
或者在你使用之前转换变量
String response = ((Person) person1).myName;
另外,注意你的 access modifiers.
关于java - 我的一个类中的一个变量 "cannot be resolved or is not a field",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20890770/
我是一名优秀的程序员,十分优秀!