[java]これは絶対極悪コードだと思うぞ
2006/07/05
2006/11/26
下記のコードをみて、何も気づかなかったら、ちょいとあぶない。
protected static void a(){
String s = null;
if(s.equals("") || s == null){
System.out.println("s is empty.");
}
}
もちろん結果は、下記の通りである。
Exception in thread "main" java.lang.NullPointerException
nullの判定が効いていない。
正直Stringの扱いで
if(s == null || s.equals(""))
を書きたくない。
迷わず、ユーティリティパッケージを作成し、StringUtilsクラスを用意します。
それで、hasLenghtメソッッドを実装。
public static boolean hasLength(String s){
if(s == null || s.equals("")){
return false;
}
return true;
}
このユーティリティメソッドを使い回ししたほうが安全だと思う。
というか絶対そうする。
扱いたいStringオブジェクトにnullが入る可能性があることに耐えきれないなら、
public static String toNotNull(String s) {
if (s == null)
return "";
return s;
}
を作成して、
String s = null;
s = toNotNull(s);
したほうがよいよ思う。
jdk1.5を使用するとstatic importが使えるので、ユーティリティクラスを使用する際に、みためもすっきりになるし。
protected static void a(){
String s = null;
if(s.equals("") || s == null){
System.out.println("s is empty.");
}
}
もちろん結果は、下記の通りである。
Exception in thread "main" java.lang.NullPointerException
nullの判定が効いていない。
正直Stringの扱いで
if(s == null || s.equals(""))
を書きたくない。
迷わず、ユーティリティパッケージを作成し、StringUtilsクラスを用意します。
それで、hasLenghtメソッッドを実装。
public static boolean hasLength(String s){
if(s == null || s.equals("")){
return false;
}
return true;
}
このユーティリティメソッドを使い回ししたほうが安全だと思う。
というか絶対そうする。
扱いたいStringオブジェクトにnullが入る可能性があることに耐えきれないなら、
public static String toNotNull(String s) {
if (s == null)
return "";
return s;
}
を作成して、
String s = null;
s = toNotNull(s);
したほうがよいよ思う。
jdk1.5を使用するとstatic importが使えるので、ユーティリティクラスを使用する際に、みためもすっきりになるし。
: