繁体   English   中英

为什么我不能在泛型方法中将+运算符与Integer和Double一起使用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM