Can we write generic function in java to add different types of variable.
Example:
2+3 = 5(Integer addition)
"hi" + "I am here" = "hi I am here" (String addition)
Can we write generic function in java to add different types of variable.
Example:
2+3 = 5(Integer addition)
"hi" + "I am here" = "hi I am here" (String addition)
Yes - kind of, but not using Java generics. Something like this would be a start.
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"));
}
Prints:
49.0
32107 - Hello