Java问题:无法访问EmployeeTest类型的封闭实例。

huangapple go评论82阅读模式
英文:

Java problem : No enclosing instance of type EmployeeTest is accessible

问题


public class EmployeeTest {
    public static void main(String[] args) {
        Employee[] staff = new Employee[1];
        staff[0] = new Employee("Carl Cracker", 75000);
        for (Employee e : staff)
            System.out.println("name=" + e.getName() + ",salary=" + e.getSalary());
    }

    class Employee {
        private String name;
        private double salary;

        public Employee(String n, double s) {
            name = n;
            salary = s;
        }

        public String getName() {
            return name;
        }

        public double getSalary() {
            return salary;
        }
    }
}

抱歉,当我运行代码时,结果是:

类型EmployeeTest的封闭实例不可访问。 必须使用类型EmployeeTest的封闭实例限定分配(例如,x.new A(),其中x是EmployeeTest的实例)。

我确信我的代码非常简单易懂,所以我对为什么会出现这个错误感到非常困惑。

您能否给我一些建议?非常感谢!

英文:

I am working with Java and trying to write a very simple test code like this to test and I thought that there was no problem but there was one problem.


public class EmployeeTest {
	public static void main(String[] args){
		Employee[] staff = new Employee[1];
		staff[0] = new Employee("Carl Cracker", 75000);
		for (Employee e : staff)
			System.out.println("name=" + e.getName() + ",salary=" + e.getSalary());
	}
	
class Employee
{
	private String name;
	private double salary;
	public Employee(String n, double s)
	{
		name = n;
		salary = s;
	}
	public String getName()
	{
		return name;
	}
	public double getSalary()
	{
		return salary;
	}
}
}

Unfortunately, when I ran my code, the result is

No enclosing instance of type EmployeeTest is accessible. Must qualify the allocation with an enclosing instance of type EmployeeTest (e.g. x.new A() where x is an instance of EmployeeTest).

I am sure that my code is very simple and easy to understand, so I am very confusing that why I had that error?

Could you please give me some comments ? Thank you very much!

答案1

得分: 1

class Employee添加属性static,否则它是一个非静态内部类,需要从EmployeeTest的实例化对象中实例化,而这个对象在*EmployeeTest.main*中是不存在的。

英文:

Add the attribute static to class Employee otherwise it's a non static inner class which needs to be instantiated from an instance of EmployeeTest, which does not exist in EmployeeTest.main.

huangapple
  • 本文由 发表于 2020年8月21日 11:51:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/63516267.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定