内部接口?

时间:2009-09-26 20:51:11

标签: java interface

我对Java很新,我不明白这个结构是什么。我知道什么是接口以及如何定义,但在这种情况下,我真的不知道。你能告诉我们是什么意思吗?

public interface WebConstants {
    public interface Framework {
        String ACTION = "action";
    }

    public interface Look {
        String LIST_CONT = "list.cont";
    }
}

2 个答案:

答案 0 :(得分:1)

界面内的每个字段都是隐式的public,static和final。在这种情况下,WebConstants声明了一个内部接口(public,static和final)Framework和(public,static和final)Look,它们也有一些(public,static和final) )字符串字段。

这是一种(非常常见的)在代码中对常量进行排序的方法,您可以输入以下结构:

String action = WebConstants.Framework.ACTION;

String list = WebConstants.Look.LIST_CONT;

这样做的好处是,因为WebConstants是一个界面,所以你不能意外地将其设置为

答案 1 :(得分:1)

如果您正在考虑使用类似的解决方案,您可能需要查看枚举:

public enum WebConstants
{
    ACTION("action"), LIST_COUNT("list.count");

    private String display;

    private WebConstants(String display)
    {
        this.display = display;
    }

    public String getDisplay()
    {
        return display;
    }
}

所以你可以用它来调用WebConstants.ACTION.getDisplay()。

拥有一个常量接口对我来说没有任何意义。更好的做事方式可能是使用抽象访问器方法。

public interface ActionAware
{
    public String getAction();
}

public interface ListCountAware
{
    public String getListCount();
}

public abstract class AbstractUseCase implements ActionAware, ListCountAware
{

    public void doSomething()
    {
        String action = getAction();
        String listCount = getListCount();
    }

}

public final class SpecificUseCase extends AbstractUseCase
{
     public final static String ACTION = "specific.action";
     public final static String LIST_COUNT = "specific.list.count";

     public String getListCount()
     {
         return LIST_COUNT;
     }

     public String getAction()
     {
         return ACTION;
     }

     // other methods

}