我想要一个 Fraction 类,我可以用它来封装有关分数的数据和逻辑,但我想让用户选择他们想要使用的整数大小。不幸的是,没有通用的父类(super class)只涵盖这些类:BigInteger、Long、Integer、Short
我会使用Number
,但我不想允许使用 float 或小数等非整数。
我可以做这样的事情吗?
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();
}
}
}
我当前收到的错误是T 无法解析为变量
最佳答案
我要做的就是 Fraction<T extends Number>
,但只有私有(private)构造函数,并且返回实例的所有公共(public)方法都特定于这些类型之一。 (因此,理论上,您可以引用 Fraction<Float>
,但实际上只能获取引用基于整数的类型的 Fraction
实例。)
关于java - 如何在 Java 中创建泛型类但限制可以使用的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39210378/