我有以下情况。
package A;
class SampleClass
{
static interface sampleInterface
{
....
}
}
现在,当我尝试从另一个包导入sampleInterface时,jDev说“访问不允许”。可能是什么问题?
答案 0 :(得分:1)
目前,界面被视为包私有(没有可见性修饰符,因此这是默认值)。将public
放在外部类和接口上,它将对其他类可见。
小心 - 如果你遇到必须这样做的情况:
public class Alpha extends Alpha.IAlpha {
public void doNothing();
public static interface IAlpha {
public void doNothing();
}
}
... 循环继承会出现问题,您的课程将无法编译。实际上,您根本无法使用该界面。
请记住这些规则以暴露接口,类或枚举:
如果您只需要该特定对象的内部类,接口或枚举,那么可以将其声明为静态。
如果您需要可以从但那个对象访问的类,接口或枚举,那么最好将其移出内部类,并移动到自己的文件中。
通常,接口被视为符合的API - 除非它们的范围极狭窄,否则将它们作为嵌套确实没有任何好处。
答案 1 :(得分:0)
将类的可见性和公共界面的可见性更改。它肯定会起作用。
答案 2 :(得分:0)
。
目前,您的界面被视为无修饰符(包私有),并且只能在自己的包中访问。
因此将其更改为public
修饰符。像:
package A;
public class SampleClass
{
public static interface sampleInterface
{
....
}
}
答案 3 :(得分:-1)
当您声明没有访问说明符的类时,它是通过package-default。这意味着您只能访问该包中的该类。
如果您想从其他套餐中访问课程,请将课程公开,即
public class SampleClass
同样,在您的情况下,由于您也想要访问界面,您也必须公开该界面。
这将解决您的问题。