我有以下方法: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