次のクラスがあるとしましょう:
public class Test<E> {
public boolean sameClassAs(Object o) {
// TODO help!
}
}
o
と同じクラスであることを確認するにはどうすればよいE
ですか?
Test<String> test = new Test<String>();
test.sameClassAs("a string"); // returns true;
test.sameClassAs(4); // returns false;
(Object o)
スーパークラスをオーバーライドしているため、メソッドのシグネチャを変更できないため、メソッドのシグネチャを選択できません。
また、キャストを試みて、失敗した場合に結果の例外をキャッチするという道をたどりたくありません。