2015-11-18 28 views
6

ユーザーがクラスを入力したかどうかを示す「クラス」クラスの静的メソッドは、有効な既存のJavaクラス名であるかどうかを教えてください。クラスが存在するかどうかを確認する方法

+2

あなたは私の意見で有効な質問に投票した理由を理解できません。ようこそ! – HRgiger

+1

@HRgiger:ありがとう、ありがとう。 :) –

+0

私はdownvoteを理解することができます。 a)質問には言葉が貧弱です。 b)よく研究されていない。 c)以下を参照 –

答えて

5

あなたはこのようClass.forNameを使用して、クラスの存在を確認することができます。

try 
{ 
    Class.forName("myClassName"); 
} 
catch(ClassNotFoundException e) 
{ 

} 
+2

しかし、これは実際にクラスを読み込むことに注意してください副作用がある可能性があります。また、クラス自体が存在する場合には失敗する可能性がありますが、クラスが存在しないためにロードできません。 –

9

あなたはラーフルの答えに制限を回避するためにいくつかの余分なパラメータでClass.forNameを使用することができます。

Class.forName(String)実際には、クラスをロードして初期化しますが、Class.forName(String, boolean, ClassLoader)は、2番目のパラメータがfalseの場合は初期化しません。あなたはこのようなクラスがある場合

public class Foo { 
    static { 
     System.out.println("foo loaded and initialized"); 
    } 
} 

を、あなたが

Class.forName("com.example.Foo") 

を持ってコンソールの出力がfoo loaded and initializedになります。

あなたは

Class.forName("com.example.Foo", 
       false, 
       ClassLoader.getSystemClassLoader()); 

を使用している場合は、静的初期化子が呼び出されていませんが表示されます。

+3

あなたはそれにいくつかの良い点を追加しました! +1 –

関連する問題