我的英语不好。因此,我尝试用代码解释我的问题。请尝试用代码回答我。这使我很容易理解。
我有一个问题:在C ++中,我们可以像这些代码一样实现这一点。
int max(int x,int y)
{
return (x>y)?x:y;
}
float max(float x,float y)
{
return (x>y)?x:y;
}
我可以这样做以扩展代码
template <class T>
T max(T x, T y)
{
return (x>y)?x:y;
}
如何在Java中实现类似的功能。
答案 0 :(得分:2)
您可以使用泛型。由于泛型不适用于原语,并且无法将对象与大于和小于运算符进行比较,因此,我们必须将输入类型限制为Comparable
s(可以比较的事物),以便可以使用{改为使用{3}}方法:
public static <T extends Comparable<T>> T max(T first, T second)
{
return first.compareTo(second) >= 0 ? first : second;
}
样品用量:
max(1, 2)
答案 1 :(得分:1)
JSON代码中的基本假设是T
类型支持>
运算符。 Java没有运算符重载,但是等效的方法是将代码限制为实现c++接口的T
s:
public static <T extends Comparable<T>> T max(T x, T y)
{
if (x.compareTo(y) > 0) {
return x;
}
return y;
}
或者,也可以允许呼叫者传递自定义Comparable
:
public static <T> T max(T x, T y, Comparator<T> cmp)
{
if (cmp.compare(x, y) > 0) {
return x;
}
return y;
}
答案 2 :(得分:-2)
使用泛型。它们就像模板,但可以在运行时运行
package test;
class BoxPrinter<T> {
private T val;
public BoxPrinter(T arg) {
val = arg;
}
public String toString() {
return "{" + val + "}";
}
public T getValue() {
return val;
}
}