我有以下方法:LAMBDA泛型類型界限
public <T> T getObjectFromMessage(Class<T> clazz) {
return gson.fromJson(compressor.decompress(message.getJsonInputs(s3)), clazz);
}
我想通過getObjectFromMessage
作爲一個參數必須清楚交代提供給我一個拉姆達。然後,lambda可以提供它期望在消息中找到的對象的類,並獲取它的一個實例。有沒有辦法做到這一點,而不會丟失類型信息?
我可以強制它與鑄造和一些對象邊界一起工作,但我真的很想讓消費者知道,如果它通過了Class<T>
,它將會返回T
,就像任何具有通用邊界的方法一樣。
在消費拉姆達,目前我被迫做了聲明體操,如:
public void consume(Function<Class<Object>, Object> getInputs){
MyType type = (MyType)getInputs.apply(MyType.class);
}
但也有,我想嘗試解析輸入的情況下,如果我失敗了,嘗試不同的類。按照一種方法,仿製藥確實需要按照呼叫進行推斷。
我本來以爲這將是'功能,>',因爲只有'Object.class'具有輸入'班?'。 –
你可以顯示調用'getObjectFromMessage'的上下文嗎? –
使用對象作爲類型綁定似乎不是綁定的 – efekctive