使用位于另一个包中的默认访问修饰符创建类的对象

时间:2016-03-18 15:31:22

标签: java

我所拥有的是两个包emp和p5。我有一个文件,包含两个类,其中一个是公共的,另一个是默认的。

package emp;

public class Employee{

 public void display(){
     System.out.println("from DebarredEmply");
 }

}

class DebarredEmployee{

   public void display(){
        System.out.println("from DebarredEmply");
    } 

}

我想要的是在另一个包中的类中创建DebarredEmployee的对象。

package p5;
import emp.DebarredEmployee;

class Test{
   public static void main(String[] args){
      DebarredEmployee dEmp = new DebarredEmployee();
      dEmp.display();
   }

}

我尝试了上述方法,但它给了我错误

error: DebarredEmployee is not public in emp; cannot be accessed from outside package

那么如何创建我想要的类的对象呢? PS:
我知道默认值在包外是不可访问的,如果我将类公开并将其移动到另一个文件,它将起作用,我想这样做而不创建新文件并将访问修饰符保持为默认值。 - 适合某些草率的命名惯例。

2 个答案:

答案 0 :(得分:1)

您可以将DebarredEmployee类作为静态内部类放入Employee类。像这样:

public class Employee{

    public void display(){
        System.out.println("from DebarredEmply");
    }

    public static class DebarredEmployee{

        public void display(){
            System.out.println("from DebarredEmply");
        }

    }
}

p5包中,您可以使用import static

import static emp.Employee.DebarredEmployee;

class Test{
    public static void main(String[] args){
        DebarredEmployee dEmp = new DebarredEmployee();
        dEmp.display();
    }
}

答案 1 :(得分:-1)

DebarredEmployee dEmp;变量装饰移到main之外。如果您不希望dEmp 静态,您可以制作一个使用dEmp并使用main方法调用它的新方法。 编辑:这是有效的,因为无法在方法

中创建公共变量