【问题标题】:Interfaces with Android与安卓的接口
【发布时间】:2013-06-14 07:09:05
【问题描述】:

我正在浏览《Beinging Android Games 2nd Edition》,发现了一些我不理解的代码。在清单 3-1 中有一个接口定义为 fallows

  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();
    }

我不明白的是,我认为 Java 不允许接口具有字段。这对于运行 Java 的 android 有什么不同吗?

【问题讨论】:

  • 字段不在界面中;它们位于接口内的嵌套静态类中。接口允许嵌套静态类,类允许字段。

标签: java android interface


【解决方案1】:

有可能,这里有一个指向同一个问题的链接,但针对的是 Java,而不是特定于 Android。

inner class within Interface

【讨论】:

    【解决方案2】:

    找到定义了字段的接口并不少见,当您实现接口时,实现将从接口继承字段。

    【讨论】:

      【解决方案3】:

      Java 接口的经验法则:

      1. 必须只包含抽象方法final字段
      2. 不能用作基类

      因此它仍然可以包含字段,但它必须是最终的。但是请注意,Interface 也可以包含内部类,它允许创建任何类型的字段。

      【讨论】:

      • 谢谢。我并没有在我的类中过多地使用接口,因为我更喜欢尽可能只使用类并且只使用预定义的接口。
      • 不客气。关于您的实践,有一天您将不得不创建自己的接口,以供回调等函数使用。因此,不管你喜不喜欢,你至少必须了解基础知识。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      相关资源
      最近更新 更多