2012-03-10 12 views
0

私たちはSubclass.me()を通じてアクセスしたい 'Handler'のサブクラスを自己登録しています。 Javaでこれに似たものがありますか?静的Javaメソッドのクラスへのアクセス

public class Handler{ 
static Vector<Handler> register=new Vector<Handler>(); 
public static Handler me() { 
     return register.get(this.class);// TODO 
} 
} 

public class SubClass extends Handler{ 
    SubClass(){register.add(this);}// OK 
} 

質問を明確にする:静的なJavaメソッドを呼び出すときにCLASSを取得できますか? 'this'は利用できないので、this.classは明らかに機能しません。

答えて

4

スタティックメソッドはクラスに属します。それらは上書きすることはできません。

MyClass.myStaticMethod() 

は、静的メソッドにアクセスする唯一の正しい方法です。

+0

これらは上書きする必要はありませんが、2番目の部分は質問に答えます。 MyClass.myStaticMethod()が唯一の正しい方法である場合、Subclass.myStaticMethod()を呼び出すとどうしてeclipseで警告が出されないのですか? – Anno2001

+0

@ Anno2001 Eclipseでは、エラー/警告を受け取るか、静的メンバーへの非静的アクセスを無視するかを選択できます。 Eclipseの環境設定 - Java - >コンパイラ - >エラー/警告 - >コードスタイル - >静的メンバーへの非静的アクセスを参照してください。 – ddelver

0

Javaでは、非静的メソッド/変数への静的参照を作成することはできません。したがって、

  • 非静的メソッド/変数にアクセスする場合は、まず クラスのインスタンスを作成する必要があります。
  • 静的メソッド/変数にアクセスする場合は、 インスタンスを作成せずに、 をクラス名から直接アクセスできます。

静的メソッドおよび変数は、インスタンスではないクラスに属し、非静的メソッドおよび変数は、クラスではないインスタンスに属しているためです。

関連する問題