如何在Java中实例化通用类型?

时间:2014-03-29 02:10:46

标签: java

package edu.uab.cis;

public class Fraction<Num> extends java.lang.Number{

private <Num> numerator;
private <Num> denominator;


public Fraction(Num num, Num denom)
{
    this.numerator = num;
    this.denominator = denom;
}



public double doubleValue() {

    return 0;
}


public float floatValue() {

    return 0;
}


public int intValue() {

    return 0;
}


public long longValue() {

    return 0;
}


public <Num> void number(Num num)
{

}

}

我试图创建一个泛型类型,它将采用所有上述原始类型,因此我可以使用一种方法而不是使用多种方法。如何正确地使用泛型类型实例化我的方法,以便它将采用所有数字类型和仅数字类型?

1 个答案:

答案 0 :(得分:1)

将班级行更改为

public class Fraction<Num extends Number> extends java.lang.Number  {

消除变量声明周围的括号:

private Num numerator;

并使用例如

创建一个新实例
Fraction<Integer> intFrac = new Fraction<Integer>(1, 2);

除非我误解你,否则你可以消除&lt; Num&gt;来自number(Num num)函数的签名。

您还应该考虑将Num更改为N,因为单个大写字母是泛型的惯例,Num可能会混淆为类名。