0

这个网站上有很多关于这个的问题。我浏览了所有这些问题以及互联网,但没有找到解决我的特定问题的方法(或者无法看到它们与它的关系)。此外,这里可能独一无二的是,这是一个特定于 java 的问题,它不适用于 c#。我在这里做了一些非常简单的事情(在java中),创建一个像这样的类 -

public class asdf{
    public int aa;
    public int bb;
    public asdf(int i,int j){
        aa=i;
        bb=j;
    }
}

现在我尝试从另一个类的主要方法实例化它 -

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 特有的东西。

4

2 回答 2

1

在您完全了解内部类和静态内部类之前,最好在单独的文件中定义每个类。将 asdf 类保存在自己的文件中(请在类名的开头使用大写字母)并将其从 test2 类中删除。运行 test2 类,这一切都应该工作,而不必将任何东西声明为静态。

回到这个问题,一旦你开始阅读内部类,再试一次。

于 2013-08-29T02:21:55.440 回答
0

问题是asdf当您从 main 方法创建内部类时,它正在被实例化。

最简单的方法是使asdf类静态。否则,您只能从 test2 实例中创建 asdf 实例。

于 2013-08-29T02:11:51.937 回答