我想在给定的Primitive Functional Interface中返回double类型值:
DoubleFunction<double> db1=(x)-> x+2;
System.out.println(db1.apply(23.6));
这给了我一个错误,但下面的代码是正确的:
DoubleFunction<String> db1=(x)-> x +" is now a String";
System.out.println(db1.apply(23.6));
我想知道为什么泛型类型应该是String? 任何人都可以给我一个在Primitive Functional Interface中返回int / double的例子吗?
答案 0 :(得分:4)
Generic总是适用于类,所以请使用
DoubleFunction<Double>
// ^ mean class , you can't use primitive
答案 1 :(得分:1)
在您的情况下,您可能希望a DoubleUnaryOperator
仅对基元进行操作,而DoubleFunction<Double>
将对值进行装箱/取消装箱。
DoubleUnaryOperator db1= x-> x + 2; //note: no need for brackets
System.out.println(db1.applyAsDouble(23.6));
答案 2 :(得分:1)
特别是double->double
使用DoubleUnaryOperator
代替,但一般情况下,如果没有合适的界面,您可以随时创建自己的界面。
无法支持原语作为通用参数是DoubleFunction
首先存在而不仅仅是Function<double, SomeType>
的唯一原因。
答案 3 :(得分:0)
尝试装箱,即
DoubleFunction<Double> db1=(x)-> x+2;
当您使用原始double
时,而不是类Double