###前提・実現したいこと
Javaのジェネリクスの勉強をしています。
似たような形のクラスが多く、同じような処理が多いので共通化させたいと思っているのですが、
キャストが上手くいきません。
[Java クラス キャスト]などでググったのですが、意図するような結果が見つけられませんでした。
下記のような形式でキャストを行えるようにするにはどのようにすれば良いのでしょうか?
ご指導お願いします。
※sampleMethodの呼び出し元クラスは引数として渡すことができます。
※元々のクラス群を包括する親クラスを作成、というのはナシでお願いします。
###該当のソースコード
java
1private boolean sampleMethod(List<E> a, Class c) { 2 // ここでaをc型にキャストしたい 3 a.get(0).getId(); 4 a.get(1).getId(); 5 … 6}
###補足情報(言語/FW/ツール等のバージョンなど)
Java1.8
Eというのは型変数ですか?
すみません、記載ミスです。そのつもりです。ただ、Listに詰めなくても仮型パラメータだけで渡せるようならそれでも良いかなと思っています。
静的な記述で(reflectionを持ちいずにという意)getIdを呼びたいならクラスを指定するまでもなく((C)a.get(0)).getId()でよいと思いますが、そうできない事情をもう少し具体的なコードで示された方がよいと思います。このメソッドを呼び出す部分も含めて。なんとなく設計上なにか有用な別のアドバイスが得られる気がします。
どうにもおかしな感じなので、使用しているクラスのコードを掲載してください。
swordone さんも指摘されていますが、本来ジェネリクスで実現するべきでないことを強引にやろうとして嵌っているようにも思えます(単に推測)。質問者自身にコード全体像を示してもらうのが一番だと思います。