2016-06-21 3 views
2

で最も簡潔な方法で入力パラメータの値を検証foonullの場合のメッセージです。のは、このような検証メソッドの呼び出しを想像してみましょうJavaの

実行時にJavaで引数の名前を渡さないように、指定された値の名前を取得し、メソッド呼び出しを次の例のようにすることはできますか?

validate(foo); 
+0

ハズレを使用することができます。いずれにしても、引数名は必ずしもコンパイルプロセスを助けるものではありません –

+0

あなたの質問に記載されている解決策は、実際には 'Google 'によって開発されたライブラリ、特に' NullPointerException' –

答えて

0

更新

私はあなたではなくメソッドで受信しparameterの名前よりも、そのmethodに渡されたargumentの名前を探している質問から想定しています。

objectが渡された場合、nullとなる可能性がありますので、argumentの場合、メソッドに送信される情報はありません。

参照変数は、アドレスを実際のObjectに指定する名前に過ぎません。私はargumentの名前については、JVMは気にしません。

methodName(new Object())のようにObjectを送信する時間があります。このシナリオではargumentという名前はありませんが、methodNameにはObjectのアドレスだけが渡されます。

以下のコードは、お客様の要件を満たすためのいくつかの選択肢を示しています。

あなたの質問に記載されたソリューションは、特にNullPointerException

public class TestDriveException { 

    public static void main(String[] args) { 
     MyItem myItem = null; 
     validate(myItem); 


    } 

    public static void validate(MyItem myItem) { 
     if (myItem == null) { 
      throw new MyArgumentException("myItem is null"); 
     } 
    } 


    private class MyItem { 

     String name; 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 
    } 

    private static class MyArgumentException extends NullPointerException { 

     public MyArgumentException(String s) { 
      super(s); 
     } 
    } 
} 

のためにこのような何かを行うことができ、または私はのように引数について確認していない、Googleによって開発されたライブラリによって、いくつかの方法で、使用に実際にありますObjectのアドレスを保持する名前です。 Objectから渡される情報の種類は、non nullでなければなりません。

あなたが質問に示唆されている他の事は、同様

public static void validate(MyItem myItem, String argumentValue) { 
    if (myItem == null) { 
     throw new MyArgumentException(argumentValue+" is null"); 
    } 
}  
関連する問題