所以我调用了同一个类的main方法中定义的一个方法。我正在使用“this”关键字引用可调用方法。为什么我不能在静态 main 方法中调用这个非静态方法,如下所示?
相关但有点不同的问题,通过设计选择,构建一个单独的类来实现逻辑是否有意义。本质上,主类应该只有一个 main 方法来保持简单。任何想法将不胜感激。
UniqueChars.java:8: non-static variable this cannot be referenced from a static context
System.out.println(this.hasAllUniqueChars(input));
^
1 error
public class UniqueChars {
boolean hasAllUniqueChars(String input) {
return false;
}
public static void main(String[] args) {
String input = "Harry";
System.out.println(this.hasAllUniqueChars(input));
}
}
最佳答案
因为this
是非静态的。 this
是一个实例,您不能在静态方法中引用实例变量,因为static
意味着“一个用于整个类”。
您应该使hasAllUniqueChars
方法static
(如static boolean hasAllUniqueChars(String input)
),这样您就可以做
System.out.println(UniqueChars.hasAllUniqueChars(input));
或者只是(因为你已经在类里面了)
System.out.println(hasAllUniqueChars(input));
你也可以让它保持非静态,然后这样做:
UniqueChars uc = new UniqueChars();
System.out.println(uc.hasAllUniqueChars(input));
关于java - 在 Java 的主要静态方法中调用非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20233345/