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

标签 java generics

我想要一个 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/

相关文章:

java - 显示 SwarmConnect 的排行榜

java - 多次读取请求流

java - 将数组转换为 ArrayList 的通用方法

c# - 泛型的奇怪使用

java - java中获取泛型接口(interface)的注解值

java - Java 中的 Makefile 创建

java - 无法使用 SHA-256 和 salt 创建用于密码散列的 Java 方法的 Javascript 模拟

java - IntelliJ 下的 Scala 调试非常慢

objective-c - 我将在哪里实现一个通用方法,供 3 ​​个不同的 View Controller 使用?

java - 具有通用方法的 Mockito