如何在Java中创建一个泛型类但限制可以使用的类型?

Jon*_*ung 0 java generics

我想要一个Fraction类,我可以使用它来封装有关分数的数据和逻辑,但我想让用户选择他们想要使用的大小整数.不幸的是,没有通用的超类仅涵盖这些类:BigInteger, Long, Integer, Short

我会使用Number,但我不想允许非整数,如浮点数或小数.

我可以这样做吗?

import java.math.BigInteger;

public class Fraction<T> {

    private T numerator;
    private T denominator;

    Fraction(T numerator, T denominator) {
        if (!(T == BigInteger.class || T == Long.class || T == Integer.class || T == Short.class)) {
            throw new Exception();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我目前得到的错误是 T cannot be resolved to a variable

Edw*_*ers 7

我要做的只是拥有Fraction<T extends Number>,但只有私有构造函数和返回实例的所有公共方法都特定于其中一种类型.(所以,从理论上讲,你可以参考Fraction<Float>,但实际上只能获得它的实例Fraction引用基于整数的类型.)