通用添加方法

问题描述 投票:0回答:2

[当我想执行一个带有2个参数的add方法时,如何使该方法通用?也就是说,当方法接受int数字时,不能向其发送双精度数字。当该方法接受双精度参数时,将无法向其发送整数。使用int float和double数类型时,有很多可能性,例如

public int add(int firstNumber, int secondNumber) {
        return firstNumber + secondNumber;
    }

    public float add(int firstNumber, float secondNumber) {
        return firstNumber + secondNumber;
    }

    public float add(float firstNumber, int secondNumber) {
        return firstNumber + secondNumber;
    }

e.t.c ...

我应该怎么做才能使该方法正常工作并在每种可能的配置中均采用数字?

java
2个回答
0
投票

如果您想使用基元,这是System.out.println的用法:

public void println()
public void println(boolean x)
public void println(char x)
public void println(char x[])
public void println(double x)
public void println(float x)
public void println(int x)
public void println(long x)
public void println(Object x)
public void println(String x)

如您所见,每种基本类型都有一个单独的实现。如果要支持每种原始类型,则需要使用相同的模式-每种类型使用单独的add方法。


0
投票

理论上您可以使用Numberint, double, float, BigDecimal, Integer, AtomicInteger)都是数字。

但是具有病毒性,一切都会变成数字(对象),您可能需要进行实际计算才能加以区分:

Number x = ...
if (x instanceof double.class) { ... x.doubleValue() ... }

这只是解决了问题,但也许将其转移到基本计算的核心。

尽管它很烂,但我还是更愿意在各处使用BigDecimal。

© www.soinside.com 2019 - 2024. All rights reserved.