Java,摆脱返回对象的方法的未经检查的转换

Java,摆脱返回对象的方法的未经检查的转换,java,generics,casting,Java,Generics,Casting,我还有另一个我无法摆脱的未经检查的警告案例。代码如下所示: public V getFieldValue(字符串字段名,函数转换器) { FV fieldValue=(FV)getFieldValue(fieldName);//这将返回一个对象 返回转换器.apply(字段值) } 这段代码可以编译并运行良好,但Eclipse(和Java编译器)抱怨FV转换不安全。是的,是的,但是我想依靠打电话的人知道他们在做什么,所以我想删除警告 Eclipse建议我在赋值或方法级别添加@Suppress

我还有另一个我无法摆脱的未经检查的警告案例。代码如下所示:

public V getFieldValue(字符串字段名,函数转换器)
{
FV fieldValue=(FV)getFieldValue(fieldName);//这将返回一个对象
返回转换器.apply(字段值)
} 
这段代码可以编译并运行良好,但Eclipse(和Java编译器)抱怨FV转换不安全。是的,是的,但是我想依靠打电话的人知道他们在做什么,所以我想删除警告

Eclipse建议我在赋值或方法级别添加
@SuppressWarnings(“unchecked”)
,这两种方法都不会改变任何东西。有没有可能告诉编译器我对它很好,我不想被打扰


如果您认为
getFieldValue()
应该使用泛型而不是对象,是的,我知道,但这是我无法更改的非常古老的代码。

这应该像预期的那样工作
@SuppressWarnings(“unchecked”)
。如果这不起作用,您可以尝试
@SuppressWarnings(“all”)

处理此问题的唯一真正安全的方法是删除需要FV的原因:传递一个
函数(或
函数
)。

@SuppressWarnings(“unchecked”)
将删除此警告。也许你需要打扫/rebuild@ernest_k,不,我通常会注意这些东西,我重建了很多次,还是一样的警告。嗯。。。谢谢,但我不想强制调用方在类中发送。从Javadoc来看,它看起来依赖于编译器。也许@SuppressWarnings(“all”)可以工作,因为您的方法很短,所以可以安全地抑制所有内容。添加一个参数肯定不太好:)我更新了我的答案,然后尝试了“全部”,仍然是一样的,很遗憾。谢谢!这很有效。调用者被迫在lamda表达式中使用类型转换,此外AT泛型也是如此。