2016-11-01 13 views
-1

私はを学びますを作成する方法interfaceを作成します。私は別の記事を読んで、いくつかの基本的な概念が欠けているようです。.javaのインターフェイスでエラーが発生する

何かをやったときに、終了したリスニングクラスに通知するクラスを作成したいと思います。たとえば、MainActivityMySingletonClassのバージョンをインスタンス化したいとします。 MySingletonClassMainActivityから何かを持っているし、終了したときに、

MainActivityをオーバーライドしかし、私は私のインターフェイスを作成するとき、私はエラーを取得されていsomeMethod呼び出す:

Class is public, should be declared in a file named filename.java

ここでは、上のエラーです画面:

enter image description here

ここでは私のコードです:

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のようなものがありますか?

+0

エラーメッセージは非常に明確です。 'MySingletonInterface'は' MySingletonInterface.java'と 'MySingletonClass.java'の' MySingletonClass'になければなりません。 – Eran

+1

「public」という単語を削除するか、インターフェイスとクラスを適切に名前のついたファイルに分けて移動してください。 – khelwood

+1

'MySingletonInterface'はそれ自身のファイルでなければなりません。 'MySingletonClass'によってのみ使用される場合は、本当にprivateとマークする必要があります。 – ChrisStillwell

答えて

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 
    } 
} 
+0

シングルトンはお勧めできませんか?どうして?オブジェクトのインスタンスを1つ必要とするが、それを別のアクティビティで参照する必要がある場合は、どうすればよいのですか? –

+0

Googleは、すべてのコードからシングルトンを削除するのに尽力しました。同じことをする必要があります。 http://googlecode.blogspot.com/2007/07/google-singleton-detector-released.html – duffymo

+0

しかし、なぜそれらは良い考えではありませんか? –

関連する問題