java - java和c#之间的静态上下文差异无法引用非静态变量

标签 java instantiation

这个网站上有很多关于此的问题。我浏览了所有这些内容以及互联网,但没有找到针对我的特定问题的解决方案(或者无法了解它们与该问题的关系)。 另外,这里的独特之处在于这是一个 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/

相关文章:

java - 带注释的单例实例的 guice 注入(inject)器 getInstance

java - 使用 CXF 和 Tomcat 的 WSDL 导入位置

java - 当请求的页面或方法找不到时如何定义全局页面?

java - 从父类(super class) static main 创建子类

swift - 在 Swift 中创建运行时已知类的实例

java - 无法覆盖 AsyncTask 类中的 onPostExecute() 方法或使其触发

java - Java中如何监听对象实例化事件

java - 无法实例化类;无空构造函数错误 - Android 切换 Activity

python - 是否可以用两种不同的方式实例化一个类的对象?

java - 防止删除文件