0

我有以下情况。

package A;
class SampleClass
{
 static interface sampleInterface
 {
   ....
 }
}

现在,当我尝试从另一个包导入 sampleInterface 时,jDev 说“不允许访问”。可能是什么问题呢?

4

4 回答 4

1

目前,该接口被视为包私有(没有可见性修饰符,因此这是默认设置)。放置public在外部类和接口上,它就会对其他类可见。

请小心 - 如果您陷入必须这样做的情况:

public class Alpha extends Alpha.IAlpha {

    public void doNothing();

    public static interface IAlpha {
        public void doNothing();
    }
}

...您将遇到循环继承问题,并且您的类将无法编译。事实上,您根本无法使用该界面。

请记住以下规则以公开接口、类或枚举:

  • 如果您只需要该特定对象的内部类、接口或枚举,则可以将其声明为静态。

  • 如果您需要可从除该对象之外的任何地方访问的类、接口或枚举,那么最好将其移出内部类并放入其自己的文件中。

通常,接口被视为要遵循的 API——除非它们的范围非常狭窄,否则将它们嵌套起来确实没有任何好处。

于 2013-08-22T05:38:36.307 回答
0

控制对类成员的访问

目前,您的界面被视为没有修饰符(包私有),它们只能在自己的包中访问。

所以把它改成public修饰符。喜欢:

package A;
public class SampleClass
{
 public static interface sampleInterface
 {
   ....
 }
}
于 2013-08-22T05:49:31.347 回答
0

将类和接口的可见性更改为公共。它肯定会起作用。

于 2013-08-22T05:44:57.767 回答
-1

当您声明一个没有访问说明符的类时,它是包默认的。这意味着您只能访问该包中的该类。

如果您想从另一个包访问类,请公开类,即

public class SampleClass

同样,在您的情况下,由于您也想访问该接口,因此您也必须将该接口公开。

这将解决您的问题。

于 2013-08-22T05:45:22.457 回答