gpt4 book ai didi

java - 有什么方法可以在Java中指定两种类型作为函数arg类型吗?

转载 作者:行者123 更新时间:2023-12-01 16:42:23 25 4
gpt4 key购买 nike

由于某些原因,我不想将 Object 声明为类型,但我只需要编译器检查输入是否属于代码中提到的两种类型中的任何一种。 (整数, double )

public static Integer/Double on(Integer/Double a,Integer/Double b)
{
return a+b;
}

Java 中没有 instanceof 是否可能(可能的最短语法)?

最佳答案

如果您只需要对 IntegerDouble 类型执行“某些操作”,并且需要添加该类型的实例,并且方法体更加复杂不仅仅是添加参数:使用两个重载,并委托(delegate)给私有(private)方法:

static Integer on(Integer a, Integer b) {
return on(a, b, Integer::sum);
}

static Double on(Double a, Double b) {
return on(a, b, Double::sum);
}

private static <T> T on(T a, T b, BinaryOperator<T> sum) {
// ... Something, using `sum.apply` to add things.
}

调用者(此类之外)只能在此处调用 Integer/Double 重载。泛型不会直接允许您限制特定类型;您所能做的就是限制泛型方法的可见性。

关于java - 有什么方法可以在Java中指定两种类型作为函数arg类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60914382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com