我有以下lambda表达式:
public mylambdafunction(){
Optional<MyClass> optional = Arrays.stream(myClassesValues).filter(x ->
new String(x.bytesArray,"UTF-16LE").equalsIgnoreCase(comparationString)).findFirst();
}
嗯,方法new String(x.bytesArray,” UTF-16LE”)
引发了异常UnsupportedEncodingException
。
我想向主函数mylambdafunction()
提出异常,例如:
public mylambdafunction() throws UnsupportedEncodingException{
....
}
这可能吗?
答案 0 :(得分:4)
可能修改功能接口方法的替代方法,因为您使用的是众所周知的字符集,所以使用the overloaded String
constructor which accepts a byte[]
and a Charset
,但不会抛出UnsupportedEncodingException
。
使用StandardCharsets.UTF_16LE
作为Charset
参数。
Stream#filter(Predicate)
期望Predicate
提供test(Object)
方法。由于此方法未声明已检查的异常,该异常是UnsupportedEncodingException
的超类型(并且由于UnsupportedEncodingException
本身已被检查),因此任何其身体抛出此类异常的lambda表达式将不兼容。类似地,对声明此类异常的方法的任何方法引用也都是不兼容的。