我无法使用这个Java代码。我已经阅读了多个示例,但没有一个解释为什么代码不起作用。
代码:
class Main {
public static void main(String[] args) {
class UserInfo {
public String Name = "Example Name";
public int Age = 13;
static int GetAge() {
return (Age);
}
}
UserInfo.GetAge();
}
}
请注意我对Java很新。
你不能从静态上下文中调用非静态方法我已经将类移到了方法之外并使其成为静态的
尝试下面的代码
class Main {
public static void main(String[] args) {
System.out.println(UserInfo.GetAge());
}
static class UserInfo {
public String Name = "Example Name";
static int Age = 13;
static int GetAge() {
return (Age);
}
}
}
如果你想要一个动态类,你可以在哪里定义名称和年龄使用下面的代码
class Main {
public static void main(String[] args) {
UserInfo userInfo = new UserInfo("John", 13);
System.out.println(String.format("Name: %s Age: %s", userInfo.getName(), userInfo.getAge()));
}
static class UserInfo {
String name;
int age;
UserInfo(String name, int age){
this.name = name;
this.age = age;
}
int getAge() {
return age;
}
String getName() {
return name;
}
}
}
如果不创建新的UserInfo对象,则无法从静态上下文调用非静态方法。您需要创建新的UserInfo对象
class Main {
public static void main(String[] args) {
class UserInfo {
public String Name = "Example Name";
public int Age = 13;
int GetAge() {
return (Age);
}
}
UserInfo userInfo = new UserInfo();
userInfo.GetAge();
}
}
错误1:age
是instance
变量你不能在static
方法GetAge()
内使用它所以要么使Age
静态或使getAge
实例...
static int GetAge() {
return (Age);
}
错误2:您无法使用类名引用访问实例变量GetAge()
。要纠正它你必须创建对象并使用此引用来访问它。
UserInfo.GetAge(); // does not compile
改为使用:
UserInfo userInfo = new UserInfo();
userInfo.GetAge();
通常,实例变量不能在侧静态方法中使用,并且您不能使用类引用来访问java中的实例成员。
首先,你不能从静态上下文中调用非静态方法,你应该需要从main方法外部移动内部类并使其静态化。
试试这个:
public class Main {
public static void main(String[] args) {
System.out.println(UserInfo.GetAge());
}
static class UserInfo {
public String Name = "Example Name";
public static int Age = 13;
static int GetAge() {
return (Age);
}
}
}