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 は int != Integer を認識するため、Java はこれを許可しません。ジェネリックが機能する方法のため、abを設定できません。型 int のプリミティブ性のためです。「型エラー」がスローされるため、整数へのキャストでさえ機能しません。

最後に、これに対して何らかの回避策があるかどうかを尋ねなければなりませんか、それともこれを機能させようとしても無駄ですか?

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;

new Integer(10int は、 ) またはで明示的に Integer に変換できます。Integer.valueOf(10)

于 2012-10-11T19:00:04.850 に答える
1

コードはあまり意味がありません:メソッドを持たないtypebのオブジェクトです。aab.a(25)intInteger

于 2012-10-11T18:59:27.690 に答える