从类错误Java创建新对象
我正在尝试使用JOptionPane显示我的person对象名称、年龄。Name和age是命令行参数中的字符串和整数。但是,我得到了以下错误:从类错误Java创建新对象,java,class,object,command-line,tostring,Java,Class,Object,Command Line,Tostring,我正在尝试使用JOptionPane显示我的person对象名称、年龄。Name和age是命令行参数中的字符串和整数。但是,我得到了以下错误: BasicClass.java:9: error: non-static variable this cannot be referenced from a static context Person person1 = new Person(args[0], age1); ^ BasicCla
BasicClass.java:9: error: non-static variable this cannot be referenced from a static context
Person person1 = new Person(args[0], age1);
^
BasicClass.java:10: error: non-static variable this cannot be referenced from a static context
Person person2 = new Person(args[2], age2);
^
在将第一人称对象初始化为命令行输入时,我是否处于正确的轨道上
编辑
抱歉,我忘记了我的代码示例:
import javax.swing.JOptionPane;
public class BasicClass{
public static void main(String[] args){
Integer age1 = Integer.parseInt(args[1]);
Integer age2 = Integer.parseInt(args[3]);
// Create two Person Objects
Person person1 = new Person(args[0], age1);
Person person2 = new Person(args[2], age2);
// toString() method to display first & second Person Object
String firstOutput = person1.toString();
String secondOutput = person2.toString();
JOptionPane.showMessageDialog(null, firstOutput);
JOptionPane.showMessageDialog(null, secondOutput);
}
// Object
class Person{
// Data fields that will store each of the objects data
private String name;
private Integer age;
// Constructor
public Person(String n1, int a1){
name = n1;
age = a1;
}
public String toString(){
String output = name + " is" + age + " years old.";
return output;
}
}
}
Person是非静态的内部类,这意味着它是外部类BasicClass实例的成员,没有这个实例,您不能像使用方法或字段一样使用它
由于您在静态方法和静态方法中使用该类,所以此引用不考虑默认值
使Person类保持静态
或者创建外部类的实例,通过该实例可以创建Person类的实例,如
BasicClass basic = new BasicClass();
Person p = basic.new Person();
或者将Person类的代码放在BasicClass类之外
这是因为您正在静态上下文中调用非静态类。一种方法是在主类中创建Person对象,然后创建主类对象。否则,您应该将Person类声明为静态类,例如
import javax.swing.JOptionPane;
public class Main{
public static void main(String[] args){
Integer age1 = Integer.parseInt(args[1]);
Integer age2 = Integer.parseInt(args[3]);
// Create two Person Objects
Person person1 = new Person(args[0], age1);
Person person2 = new Person(args[2], age2);
// toString() method to display first & second Person Object
String firstOutput = person1.toString();
String secondOutput = person2.toString();
JOptionPane.showMessageDialog(null, firstOutput);
JOptionPane.showMessageDialog(null, secondOutput);
}
// Object
static class Person{
// Data fields that will store each of the objects data
private String name;
private Integer age;
// Constructor
public Person(String n1, int a1){
name = n1;
age = a1;
}
public String toString(){
String output = name + " is" + age + " years old.";
return output;
}
}
}
请参阅。如果不查看代码,则无法进行注释。发布Person类和发生此错误的类。创建Person类static@KugathasanAbimaran谢谢你,完全忘记了!感谢您对Pshemo的详细解释!我实际上打算关闭我的基本类…但是我没有我的结束括号。真遗憾,因为一个简单的错误,我遇到了这么多麻烦:尽管如此,我还是很感激你的解释,因为它让我更加理解你classes@Asiax3不客气: