当前位置: 首页 > 面试题库 >

如何编写一个通用的加数字方法[重复]

上官斌
2023-03-14
问题内容

我想定义一个在不同类型数字之间求和的方法:

<T> void add (T one, T two)
{
    T res = one + two; 
}

上面的方法不起作用,因为类型擦除转换TObject ,因此在Object…上未定义+运算符

那怎么办

谢谢。


问题答案:

您必须使用有界类型参数:

public <T extends Number> double add (T one, T two)
{
    return one.doubleValue() + two.doubleValue(); 
}

请注意,它使用double作为返回类型,因为这是覆盖最大范围值的原始数字类型-
一个或两个参数也可以double。请注意,Number还具有BigDecimalBigInteger作为子类,它们可以表示范围之外的值double。如果您想正确处理这些情况,将会使方法变得更加复杂(您必须开始不同地处理不同类型)。



 类似资料:
  • 问题内容: 通用方法: 所需的覆盖方法: 实现此目的的Java语法是什么? 问题答案: 更好的设计是。

  • 如何编写一个toString()方法,为三名员工打印名称和computePay,小数点后两位?在我添加StringBuilder之前,该程序正在工作(将名称和周支付打印到命令行)。感谢任何帮助。

  • 进入了一个非常基本的问题。我必须将json字符串转换为对象。我有一个自定义方法,如下所示,如果它无法从中获取对象,则预计将转换为相应的类并抛出异常。 问题是如果我试图转换不同类的json,这个方法不会抛出异常。 我的班级 } 当我传递的是公司的json字符串而不是上述类的字符串时,它不会引发异常。 字符串: 我想我做这个转换的方式是错误的。建议的做法是什么?

  • 问题内容: 当我发现以下代码在没有警告和打印的情况下进行编译时,我感到非常惊讶: 我预期会有编译错误。 编译该代码是否有原因? 确保参数具有相同类型的正确方法是什么? 编辑: 关于有限类型参数呢?我能想到的最好的是: 不幸的是,java不允许循环约束。不编译。这是死胡同吗? 问题答案: 究其原因,这是编译因为Java会推断出参数的最具体的超传入,在这种情况下,后是盒装,以和为传递。 没有泛型: 即

  • 本文向大家介绍写一个加密字符串的方法相关面试题,主要包含被问及写一个加密字符串的方法时的应答技巧和注意事项,需要的朋友参考一下

  • 我想写一个带有参数的异步方法,如下所示: 如何在中执行此操作?