今回は、ちょっとしたネタです。
知っている人も多いかもしれません。
内容はタイトルの通り「ソースコードの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<t> {
- void method(T x_obj);
- }
- class IMethodImpl implements IMethod<string> {
- @Override
- public void method(String x_obj) {
- System.out.println(x_obj);
- }
- }
- </string></t>
-
- 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 件のコメント:
コメントを投稿