这个网站上有很多关于此的问题。我浏览了所有这些内容以及互联网,但没有找到针对我的特定问题的解决方案(或者无法了解它们与该问题的关系)。 另外,这里的独特之处在于这是一个 java 特定问题,不适用于 c#。 我在这里做了一些非常简单的事情(在java中),创建一个像这样的类 -
public class asdf{
public int aa;
public int bb;
public asdf(int i,int j){
aa=i;
bb=j;
}
}
现在我尝试从另一个类的 main 方法实例化它 -
asdf aaaa = new asdf(1,2);
这是测试类中的完整代码 -
public class test2 {
public class asdf{
public int aa;
public int bb;
public asdf(int i,int j){
aa=i;
bb=j;
}
}
public static void main(String[] args){
asdf aaaa = new asdf(1,2);
}
}
这一行给了我错误 - 不能从静态上下文引用非静态变量。这里的静态是什么?主要方法位于一个非静态的类中,所有变量都不是静态的,并且我正在创建一个实例。所以有什么问题? 另请注意,这在 C# 中运行得非常好。所以,这似乎是 Java 特有的事情。
最佳答案
在您了解有关内部类和静态内部类的所有信息之前,最好在单独的文件中定义每个类。将 asdf 类保留在其自己的文件中(请在类名开头使用大写字母)并将其从 test2 类中删除。运行 test2 类,这应该可以正常工作,而无需将任何内容声明为静态。
开始阅读有关内部类的内容后,请回到此问题并重试。
关于java - java和c#之间的静态上下文差异无法引用非静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18501061/