今回は、ちょっとしたネタです。
知っている人も多いかもしれません。
内容はタイトルの通り「ソースコードの1行目でエラーを出す」方法です。
もしかすると、JVMに依存するかもしれませんのであしからず。
- エラーを吐くコードを1行目に書く方法
-
public class ExceptionAtLine1 {public static void main(String[] x_args) { System.out.println(x_args[100]); } }
-
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 100 at ExceptionAtLine1.main(ExceptionAtLine1.java:1)
- すぐに思いつく方法です。
いや、そんなの当たり前だろって思われてる人も多いでしょう。
では、以下の方法はどうでしょうか?
- Genericsを ”利用して” エラーを吐く方法
-
package sample; public class ExceptionAtLine1Zwei { public static void main(String[] x_args) { IMethod method = new IMethodImpl(); method.method(Integer.valueOf(100)); } } interface IMethod
{ void method(T x_obj); } class IMethodImpl implements IMethod { @Override public void method(String x_obj) { System.out.println(x_obj); } } -
Exception in thread "main" java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String at sample.IMethodImpl.method(ExceptionAtLine1Zwei.java:1) at sample.ExceptionAtLine1Zwei.main(ExceptionAtLine1Zwei.java:7)
-
どう見ても呼ばれるべきメソッドがありませんね。
Genericsを中途半端に使用すると恐ろしいことになる良い例です。
Eclipseで警告が出るようにしておきましょう。
厳しさは易しさです。
0 件のコメント:
コメントを投稿