Java: add two values of the same type where both are subclasses of java.lang.Number
java
Solution
You could convert all `Number`s to a single type (`double` is least-lossy):
class Attribute {
private double value;
public Attribute(String attrName, Number attrValue) {
this.name = attrName;
this.value = attrValue.doubleValue();
}
}
But IMO you're better off just overloading the constructor; `Number` is really just not a terribly useful class in my experience (and I don't seem to be the only one who thinks so).
class Attribute {
public Attribute(String attrName, int attrValue) {
this.name = attrName;
this.value = attrValue;
}
public Attribute(String attrName, double attrValue) {
this.name = attrName;
this.value = attrValue;
}
}
Problem
I want to have a constructor like the following. ``` public Attribute(String attrName, Number attrValue){ this.name = attrName; this.value = attrValue; } ``` In this I would like to have a method called incrementValue(Number n) which will add n to value. I know you cannot add two Number objects together due to the possible issues with casting. However, if I use a check to guarantee value and n are the same type is it possible to add these together? Or perhaps there is a better way to go about this. Right now I am declaring instance variables of Integer and Double and assign the value to the correct type. I was wondering about expanding this to allow for any subclass of Number. Obviously I could write separate methods for each one but that seems like bad programming. Is this possible in java? Am I going about this completely wrong?