home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

Java/Classのキャスト, instanceof演算子の代替など

Java/Classのキャスト, instanceof演算子の代替など

Java / Classのキャスト, instanceof演算子の代替など
id: 1354 所有者: msakamoto-sf    作成日: 2015-02-21 18:49:58
カテゴリ: Java 

Classのキャストなどで便利そうな Class のインスタンスメソッド3選。

  • Class#isAssignableFrom() : instanceof 演算子と似ているが、isAssignableFrom()のメリットは、検査対象のClassを例えばメソッドの引数などから動的に取ってこれる点。
someMethod(Class superClazz, Object testee) {
    if (testee instanceof superClazz) {

というのはsyntax errorで書けないが、

someMethod(Class superClazz, Object testee) {
    if (superClazz.isAssignableFrom(testee.getClass()) {

と書くことができるようになる。

  • Class#cast() : これもキャストする型を動的に決められるのがメリット。
someMethod(Class castClazz, Object target) {
    Object o = (castClazz) target;

というのはsyntax errorで書けないが、

someMethod(Class castClazz, Object target) {
    Object o = castClazz.cast(target);

と書くことができるようになる。

  • Class#asSubclass() : ユースケースが不明。

最後のがユースケース不明でちょっと使い道が分からなかったけど、とりあえず3種類、テストケースで使い方を練習してみました:



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2015-02-21 19:42:04
md5:b77fd9bf5c8a238c71a710132430b4c1
sha1:e4b46b687a98f00130c4f68276408aef174913cb
コメント
コメントを投稿するにはログインして下さい。