3

Java 7でこれを行うことが可能かどうかを探しています:

現在、いくつかのサービスでこのような関数を使用していますが、3 番目のパラメーターはサービスごとに異なります。

final RequestDTO1 requestDTO = (RequestDTO1) getDTO(param, RequestDTO1.class);

final RequestDTO2 requestDTO = (RequestDTO2) getDTO(param, RequestDTO2.class);

final RequestDTO3 requestDTO = (RequestDTO3) getDTO(param, RequestDTO3.class);

これは getDTO 署名です。

protected Object getMessage(Object param, Class clazz);

キャストを使用せずに、第 3 パラメーターで指定されたクラスのオブジェクトを返したいという getDTO 関数を指定する方法はありますか?

final RequestDTO1 requestDTO = getDTO(param, RequestDTO1.class);

final RequestDTO2 requestDTO = getDTO(param, RequestDTO2.class);

final RequestDTO3 requestDTO = getDTO(param, RequestDTO3.class);
4

3 に答える 3

9

メソッドがジェネリック化されていることを指定し (これはクラスのジェネリック化とは独立していることに注意してください。メソッドレベルで行われます)、ジェネリック型を次のように返すことができます。

protected <T> T getMessage(Object param, Class<T> clazz);

詳細については、Java チュートリアルのジェネリック メソッドのセクションを参照してください。

于 2013-07-09T09:51:11.653 に答える
2

試す:

protected <T> T getMessage(Object param, Class<T> clazz);
于 2013-07-09T09:52:03.097 に答える
1

これを試して

protected <T> T getMessage(Object param, Class<T> clazz);
于 2013-07-09T09:51:49.147 に答える