[英]Access not allowed to a static inner interface
我有以下情況。
package A;
class SampleClass
{
static interface sampleInterface
{
....
}
}
現在,當我嘗試從另一個包中導入sampleInterface時,jDev說“不允許訪問”。 可能是什么問題呢?
當前,該接口被視為package-private(沒有可見性修飾符,因此是默認設置)。 將public
放在外部類和接口上,其他類將可以看到它。
請小心-如果您陷入這種情況,請執行以下操作:
public class Alpha extends Alpha.IAlpha {
public void doNothing();
public static interface IAlpha {
public void doNothing();
}
}
...您將遇到循環繼承問題,並且您的類無法編譯。 實際上,您將根本無法使用該界面。
請記住以下規則以公開接口,類或枚舉:
如果您只需要該特定對象的內部類,接口或枚舉,則可以將其聲明為靜態。
如果你需要一個類,接口,或枚舉從任何地方訪問,但該對象,那么最好將其移出內部類,並轉化為自己的文件。
通常,接口被視為要遵循的API-將它們嵌套是沒有任何好處的,除非它們的范圍非常狹窄。
更改類的可見性以及對公眾的界面。 它肯定會工作。
從控制對類成員的訪問 。
當前,您的界面被視為沒有修飾符(package-private) ,並且只能在其自己的包中進行訪問。
因此,將其更改為public
修飾符。 喜歡:
package A;
public class SampleClass
{
public static interface sampleInterface
{
....
}
}
當您聲明一個沒有訪問說明符的類時,默認情況下它是程序包默認值。 這意味着您只能在該程序包中訪問該類。
如果要從另一個包訪問類,則將類設為public ,即
public class SampleClass
同樣,在您的情況下,也要訪問該接口,則必須將該接口也公開。
這樣可以解決您的問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.