私は次の方法があります。ラムダジェネリック型境界
public <T> T getObjectFromMessage(Class<T> clazz) {
return gson.fromJson(compressor.decompress(message.getJsonInputs(s3)), clazz);
}
を私が私に与えていますラムダへのパラメータとしてgetObjectFromMessage
渡したいです。ラムダは、メッセージ内で見つかると予想されるオブジェクトのクラスを提供し、そのインスタンスを戻すことができます。タイプ情報を失うことなくこれを行う方法はありますか?
キャストといくつかのオブジェクト境界で動作するように強制することができますが、Class<T>
を渡すと、一般的な境界を持つメソッドと同じようにT
が返されることを消費者に伝えたいと思います。かかるラムダで
public void consume(Function<Class<Object>, Object> getInputs){
MyType type = (MyType)getInputs.apply(MyType.class);
}
が、私は入力を解析してみたい場合がある、と私は失敗した場合、別のクラスを試してみてください。ジェネリックは実際にはメソッドごとに呼び出される必要があります。
を唯一 'Object.class'は'クラスを入力しているので、私は、 '>、それは'機能だろうと思ったでしょう?'。 –
'getObjectFromMessage'の呼び出しのコンテキストを表示できますか? –
オブジェクトを型バインドとして使用することはバインドされていないようです – efekctive