![](/img/trans.png)
[英]How to return a lambda function and use by passing as an argument to a method in Java 8? Why I can't use :: operator?
[英]Why I can't use + operator with Integer and Double in generic method?
我遇到了一个奇怪的问题。 我不明白为什么这段代码行不通:
public static <Type1 extends Integer, Type2 extends Double >
Object addition(Type1 first, Type2 second)
{
return second * first;
}
编译器声称Operator * cannot be applied to Type2,Type1
。 但是该类型扩展了为它们定义了+运算符的Integer和Double。 所以我真的不明白
你错了。 Integer,Double或任何其他扩展Number类的对象都没有定义“ +”或任何其他运算符。 您能够执行类似(Integer + Double)之类的操作的唯一原因是自动装箱。 自动装箱是一种“硬编码”功能,适用于非常小的预定义类集,例如Integer,Double等。
此外,Integer和所有其他Number子类都声明为“最终”,因此“类型扩展Integer”没有意义,因为您不能从Integer扩展任何内容。
最简单的解决方案是使用double
,它可以存储所有可能的int
值。
public static double addition(double first, double second)
{
return second + first;
}
我想你就想+
加法,而不是*
乘法
你可以跑
double d1 = addition(1, 5.5);
double d2 = addition(10.1, 5);
double d3 = addition(1, 2);
double d4 = addition(10.1, 12.3455);
延长期末课没有意义。 您的类型基本上就是您提供的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.