超级接口定义:
package mypackage1;
public Interface MySuperInterface{
public enum MY_APPLICATION_SPECIFIC_ENUM{
APP_CONS1 ,
APP_CONS2
};
}子接口定义:
package mypackage2;
public Interface MySubInterface extends My SuperInterface{
/* sub interface members */
}使用子接口的演示类:
package mypackage3;
import mypackage2.MySubInterface.MY_APPLICATION_SPECIFIC_ENUM;
class MyDemoClass{
MY_APPLICATION_SPECIFIC_ENUM myAppEnum = MY_APPLICATION_SPECIFIC_ENUM.APP_CONS1;
}它给出了编译错误:
import requires canonical name for mypackage2.MySubInterface.MY_APPLICATION_SPECIFIC_ENUM请帮助您了解如何通过子界面导入超级界面的枚举类。
发布于 2013-10-30 16:30:23
您可以通过静态导入直接访问枚举值:
import static mypackage2.MySubInterface.MY_APPLICATION_SPECIFIC_ENUM.*;然后,您将能够在进行导入的类/接口中直接使用枚举的值。
另一种办法是:
import mypackage2;
...
// Use of the interface's enum by it's real name
MySubInterface.MY_APPLICATION_SPECIFIC_ENUM myMethod(Object anyParam);发布于 2016-11-18 17:14:17
您试图引用不存在枚举的规范名称。枚举是在MySuperInterface. 接口中创建的。接口的所有变量都是静态变量和最终变量(即常量)。
静态变量不被继承,因为它们属于它们在其中声明的类。要引用enum变量,您必须执行以下操作:
package mypackage3;
import mypackage.MySuperInterface.MY_APPLICATION_SPECIFIC_ENUM;
class MyDemoClass{
MY_APPLICATION_SPECIFIC_ENUM myAppEnum = MY_APPLICATION_SPECIFIC_ENUM.APP_CONS1;
}下面链接到讨论了为什么接口中的变量是静态的和最终的:
https://stackoverflow.com/questions/19688320
复制相似问题