演習課題「getNameメソッド を用いてメソッドインスタンスがあらわすメソッドの名前を取得してみよう」
現在、getName
メソッドを用いてメソッドインスタンスがあらわすメソッドの名前を取得しようとしています。getName
メソッドを用いて、Yusha
クラスのメソッドインスタンスがあらわすメソッドの名前を出力してください。
期待する出力値
slash
lightning
damage
check
heal
hardening
演習課題「invokeメソッド を用いてメソッドインスタンスがあらわしているメソッドを実行してみよう」
現在、invoke
メソッドを用いて、メソッドインスタンスがあらわすメソッドを実行しようとしています。
アクセスレベルがprivate
なメソッドには、setAccessible
を使用してアクセスレベルのルールを抑制してください。Yusha
クラスのメソッドインスタンスがあらわすメソッドを実行できれば正解です。
期待する出力値
slash
null
lightning
null
200
null
90
100
heal
null
hardening
null
#04:メソッドの操作
このチャプターでは、リフレクションでのメソッドの操作について学習します。
プリミティブ型intを表すClassインスタンスは、Integer.TYPEで利用可能ですが、int.classとしても問題ありません。
このふたつは同じインスタンスとなります。
なお、ラッパークラス側には、同じTYPEという変数名で、それぞれプリミティブ型のインスタンスをあらわす変数が定義されています。
また、voidをあらわすクラスとしてVoidがあり、Void.TYPEはキーワードvoidをあらわすクラスインスタンスです。
これらは主にリフレクションで利用されます。// いずれも true
System.out.println(Integer.TYPE == int.class);
System.out.println(Byte.TYPE == byte.class);
System.out.println(Short.TYPE == short.class);
System.out.println(Long.TYPE == long.class);
System.out.println(Character.TYPE == char.class);
System.out.println(Float.TYPE == float.class);
System.out.println(Double.TYPE == double.class);
System.out.println(Boolean.TYPE == boolean.class);
Java7より、複数の例外に対して同じ処理を行いたい場合、個々のキャッチ節を記述せずに|を用いてまとめることができます。} catch (AException e) {
} catch (BException e) {
}} catch (AException | BException e) {
}