1

我是java新手。
我收到此错误消息“无法从静态上下文引用非静态变量”。
我已经在 SO 中阅读了一些答案,但我无法根据我的问题调整解决方案。

这是代码:

package test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class test{

public class Pass {    
    private int identity;
    private ArrayList<Date> logged_in;
    private ArrayList<Date> logged_out;
    public Pass(int identity){ 
        this.identity = identity;
        this.logged_in = new ArrayList<Date>();
        this.logged_out = new ArrayList<Date>();
    }    
}


public class Officer {    
    private Pass pass;
    public Officer(Pass pass){ this.pass = pass; }    
}    

public static void main(String[] args) throws ParseException {  
    Officer officer1 = new Officer(new Pass(1111));// PROBLEM IN THIS LINE 
}
}

在此先感谢您的帮助。

4

2 回答 2

7

您将希望在“测试”课程之外参加军官和通行证课程,以便他们与“测试”课程并肩生活,而不是在其中。

更新:正如其他答案所暗示的,每个文件只有一个公共类。我已经更新了代码以反映这一点。此外,类通常放置在它们自己的文件中,并且不会一起存在。

package test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;


class Pass {    
    private int identity;
    private ArrayList<Date> logged_in;
    private ArrayList<Date> logged_out;
    public Pass(int identity){ 
        this.identity = identity;
        this.logged_in = new ArrayList<Date>();
        this.logged_out = new ArrayList<Date>();
    }    
}

class Officer {    
    private Pass pass;
    public Officer(Pass pass){ this.pass = pass; }    
}    

public class test{
    public static void main(String[] args) throws ParseException {  
        Officer officer1 = new Officer(new Pass(1111));// PROBLEM IN THIS LINE 
    }
}
于 2012-11-19T19:25:40.993 回答
1

您的代码唯一的问题是内部类的用户。由于您是初学者,所以我假设您不想深入研究内部类。

所以你必须定义3个相互独立的类。

Class Pass是公开课...

班主任是第二公开课

类 Test 是另一个公共测试功能。

所以

Pass{
}

Officer{

}

Test{

}

一开始我们把自己弄糊涂了,试着把所有的东西都写在大括号里。但这并不总是正确的。但在单个文件中声明一个类是一种很好的做法。所以在你的例子中......

Pass.java 应该包含 Pass 类...

Pass {

}

officer.java 应该包含officer类...

Officer {

}

同样适用于测试类......

除此之外,你可以选择从一些好书上学习,这将帮助你首先建立你的基础。

于 2012-11-19T19:37:03.767 回答