2017-12-13 3 views
0

Java 8では、オブジェクトが正しいクラスであるかどうかをチェックし、 。ような何か:1つのメソッドでジェネリックを使用してインスタンスをチェックしてオブジェクトをキャストすることはできますか?

private T check(final Object value) { 
    assertThat(value, instanceOf(T.class)); 
    return (T) value; 
} 

それは次のように呼び出すことができるようにこれを達成するために

String strValue = check<String>(objValue); 
+4

あなたが求めているのは、通常のキャストとまったく同じです。 –

+0

@LouisWassermanほぼ。通常のキャストは失敗した場合に 'ClassCastException'をスローします。 – shmosel

+1

さて、確かにassertThatはおそらく厳密にはあまり有用ではないアサーションの例外やエラーを投げます。 –

答えて

2

の方法は、あなたがに対してチェックしたいClassオブジェクトを渡すことです。

private <T> T check(final Object value, Class<T> clazz) { 
    assertThat(clazz.isInstance(value)); 
    return clazz.cast(value); //Throws ClassCastException if not valid 
} 
+0

これはありがたいですが、私はかなり近いですが、警告のないバージョンを手に入れることはできませんでした。 –

関連する問題