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