home Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

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

作成日: 2015-02-21 18:49:58   /   last updated at: 2015-02-21 19:42:04
カテゴリ: 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種類、テストケースで使い方を練習してみました:


original url: https://www.glamenv-septzen.net/view/1354