Java:在接口中拥有类的目的是什么

Java:在接口中拥有类的目的是什么,java,interface,Java,Interface,我的一位朋友正在编写一些Java代码,我们就他的问题交换了一些想法(他使用的框架相当混乱) 他的一个问题是通过在接口的私有类中放置枚举来解决的。当他告诉我这件事时,我非常头痛。他说这是一种在接口中使用枚举的方法。我一直认为接口只是为了公开一个接口而已 为什么可以在接口中放置类,以及它有什么用途?我们可以在接口中放置类。其用法的一个示例是: public interface Input { public static class KeyEvent { public sta

我的一位朋友正在编写一些Java代码,我们就他的问题交换了一些想法(他使用的框架相当混乱)

他的一个问题是通过在接口的私有类中放置枚举来解决的。当他告诉我这件事时,我非常头痛。他说这是一种在接口中使用枚举的方法。我一直认为接口只是为了公开一个接口而已


为什么可以在接口中放置类,以及它有什么用途?

我们可以在接口中放置类。其用法的一个示例是:

public interface Input
{
    public static class KeyEvent {
         public static final int KEY_DOWN = 0;
         public static final int KEY_UP = 1;
         public int type;
         public int keyCode;
         public char keyChar;
    }
    public static class TouchEvent {
         public static final int TOUCH_DOWN = 0;
         public static final int TOUCH_UP = 1;
         public static final int TOUCH_DRAGGED = 2;
         public int type;
         public int x, y;
         public int pointer;
    }
    public boolean isKeyPressed(int keyCode);
    public boolean isTouchDown(int pointer);
    public int getTouchX(int pointer);
    public int getTouchY(int pointer);
    public float getAccelX();
    public float getAccelY();
    public float getAccelZ();
    public List<KeyEvent> getKeyEvents();
    public List<TouchEvent> getTouchEvents();
}
公共接口输入
{
公共静态类KeyEvent{
公共静态最终整型键\u DOWN=0;
公共静态最终整型键\u UP=1;
公共int类型;
公钥密码;
公共字符keyChar;
}
公共静态类TouchEvent{
公共静态最终int触地=0;
公共静态最终整修=1;
公共静态最终int-TOUCH_=2;
公共int类型;
公共整数x,y;
公共int指针;
}
公共布尔值isKeyPressed(int-keyCode);
公共布尔ISTOUCHTOWN(整型指针);
公共int getTouchX(int指针);
公共int getTouchY(int指针);
公共浮点数getAccelX();
公众浮标;加速度();
公共浮动getAccelZ();
公共列表getKeyEvents();
公共列表getTouchEvents();
}

在这里,代码有两个嵌套类,用于封装有关事件对象的信息,这些对象稍后将在方法定义中使用,如getKeyEvents()。将它们放在输入接口内可以提高内聚性。

我们可以在接口内设置类。其用法的一个示例是:

public interface Input
{
    public static class KeyEvent {
         public static final int KEY_DOWN = 0;
         public static final int KEY_UP = 1;
         public int type;
         public int keyCode;
         public char keyChar;
    }
    public static class TouchEvent {
         public static final int TOUCH_DOWN = 0;
         public static final int TOUCH_UP = 1;
         public static final int TOUCH_DRAGGED = 2;
         public int type;
         public int x, y;
         public int pointer;
    }
    public boolean isKeyPressed(int keyCode);
    public boolean isTouchDown(int pointer);
    public int getTouchX(int pointer);
    public int getTouchY(int pointer);
    public float getAccelX();
    public float getAccelY();
    public float getAccelZ();
    public List<KeyEvent> getKeyEvents();
    public List<TouchEvent> getTouchEvents();
}
公共接口输入
{
公共静态类KeyEvent{
公共静态最终整型键\u DOWN=0;
公共静态最终整型键\u UP=1;
公共int类型;
公钥密码;
公共字符keyChar;
}
公共静态类TouchEvent{
公共静态最终int触地=0;
公共静态最终整修=1;
公共静态最终int-TOUCH_=2;
公共int类型;
公共整数x,y;
公共int指针;
}
公共布尔值isKeyPressed(int-keyCode);
公共布尔ISTOUCHTOWN(整型指针);
公共int getTouchX(int指针);
公共int getTouchY(int指针);
公共浮点数getAccelX();
公众浮标;加速度();
公共浮动getAccelZ();
公共列表getKeyEvents();
公共列表getTouchEvents();
}
在这里,代码有两个嵌套类,用于封装有关事件对象的信息,这些对象稍后将在方法定义中使用,如getKeyEvents()。将它们放在输入接口中可以提高内聚性

为什么可能

让我回答这个问题,指的是:

接口主体可以声明[…]类(§9.5)

为什么可能

让我回答这个问题,指的是:

接口主体可以声明[…]类(§9.5)


当然,这很正常。这只是一个组织问题:如果类在逻辑上与接口相关联,那么它也可能在接口中。该类很可能会在interfaceSure中用作参数或返回类型,这是完全正常的。这只是一个组织问题:如果类在逻辑上与接口相关联,那么它也可能在接口中。该类很可能会用作接口中的参数或返回类型