Java泛型函数
我们可以用java编写泛型函数来添加不同类型的变量吗 例如: 2+3=5(整数加法)Java泛型函数,java,generic-programming,Java,Generic Programming,我们可以用java编写泛型函数来添加不同类型的变量吗 例如: 2+3=5(整数加法) “hi”+“I am here”=“hi I am here”(字符串添加)是-有点像,但不使用Java泛型。像这样的事情将是一个开始 public Object add(Object... objects) { // Is there anything in the list that is not a `Number`? boolean allNumbers = true; for
“hi”+“I am here”=“hi I am here”(字符串添加)是-有点像,但不使用Java泛型。像这样的事情将是一个开始
public Object add(Object... objects) {
// Is there anything in the list that is not a `Number`?
boolean allNumbers = true;
for (Object object : objects) {
if(!(object instanceof Number)){
allNumbers = false;
break;
}
}
if(allNumbers) {
Number[] numbers = new Number[objects.length];
for (int i = 0; i < objects.length; i++) {
numbers[i] = (Number)objects[i];
}
return add(numbers);
} else {
String[] strings = new String[objects.length];
for (int i = 0; i < objects.length; i++) {
strings[i] = String.valueOf(objects[i]);
}
return add(strings);
}
}
public Number add(Number... numbers) {
BigDecimal sum = new BigDecimal(0);
for (Number number : numbers) {
sum = sum.add(BigDecimal.valueOf(number.doubleValue()));
}
return sum;
}
public String add(String... strings) {
StringBuilder sb = new StringBuilder();
for (String string : strings) {
sb.append(string);
}
return sb.toString();
}
public void test() {
System.out.println(add(Integer.SIZE, BigInteger.TEN, BigDecimal.ROUND_UNNECESSARY));
System.out.println(add(Integer.SIZE, BigInteger.TEN, BigDecimal.ROUND_UNNECESSARY, " - Hello"));
}
公共对象添加(对象…对象){
//清单上有没有不是“数字”的东西?
布尔allNumbers=true;
用于(对象:对象){
if(!(对象实例of Number)){
所有数字=假;
打破
}
}
如果(所有数字){
Number[]Number=新编号[objects.length];
for(int i=0;i
印刷品:
49.0
32107-你好
不是那样的。泛型参数类型只能是引用类型。如果“泛型”表示“不特定于类型”,则应研究动态类型语言。对于JVM,您可以考虑使用Groovy。Java不允许你这么做,我真的不明白这个问题怎么会和给定链接上的问题重复。结束这个问题可能有很多原因,但不是重复这个问题。@Ernestkiwel嗯,这个问题相当不清楚。但给出的两个示例指向运算符重载。考虑到问题的质量很差,重复是可以的。仅仅因为一个问题很差,就没有理由去重复一个不相关的问题。这将是对欺骗手段的滥用——结束一个不清楚的问题需要5票,这是一个很好的理由。我喜欢你的勇敢尝试!有趣的但要小心将Long值转换为double值。这可能会因为你很难证明的原因而失去准确性。