0

很长一段时间以来,我一直试图让一段代码工作,但这是不可能的。我拥有的类需要一个我设置为整数的泛型。所以我尝试了以下方法:

public class a<T> //set generics for this function
{
    private T A;
    protected boolean d;

    public a(final T A)
    {
        this.A = A;

        //do calculations
        //since constructor cannot return a value, pass to another function.
        this.d = retnData(Integer.parseInt(A.toString()) != 100); //convert to an integer, the backwards way.
    }
    private boolean retnData(boolean test)
    {
        return test;
    }
}
// IN ANOTHER CLASS
transient a<Integer> b;
boolean c = b.d = b.a(25); // throws an erorr: (Int) is not apporpriate for a<Integer>.a

Java 不允许这样做,因为 java 会看到 int != Integer,即使两者都接受相同的数据。由于泛型的工作方式,我无法设置 ab;因为 int 类型的原始性。即使转换为 Integer 也不起作用,因为它仍然会引发“类型错误”

最后,我不得不问一下是否有某种解决方法,或者尝试让它工作是徒劳的?

4

3 回答 3

4

您正在尝试将构造函数显式调用为实例方法。这不能在 Java 中完成。

也许你想要:

transient a<Integer> b = new a<Integer>(25);
boolean c = b.d;

但是,由于d声明为protected,因此仅当此代码位于从同一包派生的另一个类中a或在同一包中时,它才会起作用。

于 2012-10-11T19:00:57.737 回答
2

采用

final a<Integer> b = new a<Integer>(10); 
boolean c = b.d;

int 可以使用new Integer(10) 或显式转换为 IntegerInteger.valueOf(10)

于 2012-10-11T19:00:04.850 回答
1

代码没有多大意义:b是一个类型的对象a,它没有a方法 - 所以不确定你期望什么;...这与vsb.a(25)无关...intInteger

于 2012-10-11T18:59:27.690 回答