【问题标题】:Interface in .java throws error.java 中的接口抛出错误
【发布时间】:2017-03-14 23:28:24
【问题描述】:

我正在尝试学习如何创建interface。我读过不同的文章,似乎缺少一些基本概念。

我想创建一个类,当它完成某事时,它会通知所有监听类它已经完成。例如,我想在我的MainActivity 中实例化一个版本的MySingletonClass。让MySingletonClassMainActivity 做一些事情,然后在完成后,调用MainActivity 中已覆盖someMethod

但是当我创建我的界面时,我得到了错误:

类是公共的,应该在一个名为 filename.java 的文件中声明

这是屏幕上的错误:

这是我的代码:

package com.mycompany.myapplication;

public interface MySingletonInterface {
    void someMethod();

}

public class MySingletonClass {
    private static MySingletonClass ourInstance = new MySingletonClass();

    private MySingletonInterface msi;

    public static MySingletonClass getInstance() {
        return ourInstance;
    }

    private MySingletonClass() {
    }

    public void doSomething(){
        msi.someMethod();
    }

}

我应该这样做吗?有更好的最佳实践吗?我又在学习 java/android。

我来自 iOS 背景,在 iOS 中我们有所谓的委托模式,这是一个类通知另一个类它已经完成某事的一种方式。 Java中有类似的东西吗?

【问题讨论】:

  • 错误信息很清楚。 MySingletonInterface 应该在 MySingletonInterface.javaMySingletonClassMySingletonClass.java
  • 要么删除单词public,要么移动接口和类以分隔适当命名的文件。
  • MySingletonInterface 应该是它自己的文件。如果它仅供MySingletonClass 使用,那么它确实应该被标记为私有。
  • 最好将每个类或接口放在自己的文件中。任何公共类或接口的名称都必须与文件名匹配。
  • 那么有接口的目的是什么?我不能只implementsMySingletonClass 吗?

标签: java android class interface singleton


【解决方案1】:

接口和类必须在不同的文件中。我看不出界面在为你做什么。

您正在学习 Java。忘掉单身人士吧。它们不是一个好主意。

MySingletonInterface.java:

package com.mycompany.myapplication;

public interface MySingletonInterface {
    void someMethod();

}

MySingletonClass.java:

package com.mycompany.myapplication;

public class MySingletonClass implements MySingletonInterface {

    private static final MySingletonClass ourInstance = new MySingletonClass();

    private MySingletonClass() {}

    public static MySingletonClass getInstance() {
        return ourInstance;
    }

    public void someMethod(){
        // Implement here
    }
}

【讨论】:

  • 单身不是个好主意吗?为什么?如果我需要一个对象的实例,但我需要在不同的活动中引用它,你怎么做?
  • Google 竭尽全力从所有代码中删除单例。你也应该这样做。 googlecode.blogspot.com/2007/07/…
  • 阅读我给你的链接。全局变量和瓶颈从来都不是好事。您可能认为您只需要一个,但要求通常是想象多于事实。依赖注入轻松解决:将引用注入到需要它的对象中。
猜你喜欢
  • 1970-01-01
  • 2013-03-14
  • 1970-01-01
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 1970-01-01
相关资源
最近更新 更多