これが可能かどうか疑問に思っています。を保持するクラスを作成しておりNumber
、その数値はFloat
または にすることができますInteger.
。ただし、実行時に決定されます。
Float または Integer のいずれかを取り、それに対して計算を実行できる、より洗練された関数を作成したいと考えています。変数の型を列挙型に格納しているため、ジェネリック/リフレクションを使用してこれを達成できることを願っています。
ここに私の列挙型があります
public enum Type {
FLOAT,
INTEGER;
public final Class clazz;
Type() {
if (this.name().equals("FLOAT"))
clazz = Float.class;
else if (this.name().equals("INTEGER"))
clazz = Integer.class;
else
clazz = null;
}
}
それは私のクラスの内部です。
ここにいくつかのコードがあります:
private <T extends Number> T compareTo(Class<T> lhs, Class<T> rhs) {
// lhs > rhs return 1
// rhs < lhs return -1
// else return 0
}
さて、私たちがJavaで知っているように、動的にキャストを型付けすることはできませんtype.clazz lhzType = (type.clazz) lhs
が、これを行うために適切なジェネリックを使用する方法はありますか? リフレクションの問題が発生した場合、エラーとしてスローされる可能性があるため、あるべきだと思います。しかし、私は今のところ Java に関してはそれほど進んでいません。