0

私はこのようなクラスを作りました

public class Item<IdType> {
    public IdType id;
    public String name;
}

public class Dealer<IdType> {
    public IdType id;
    public String name;
}

そして、このような他のクラスの関数:

  public <T> boolean deleteById(Class<Class<T>> modelClass, T id) {
           daooperation();
           return true;
    }

私がやりたいのは、パラメーター 1 で関数 deleteById を呼び出すときですItem<Long>。パラメーター 2(id) はLongデータ型も使用する必要があります。他の例は、パラメーター 1 の deleteById でありDealer<String>、パラメーター 2(id)Stringもデータ型を使用する必要があります。パラメータ 1(modelClass) を関数 deleteById に解析する方法、または deleteById でパラメータ 1(modelClass) を変更する必要がありますか? 誰か助けてください、どうすればそれができるか教えてください。

4

3 に答える 3

1

あなたの方法はもっとこのように見えるべきだと思います。

public static <I extends Item<T>, T> boolean deleteById(I item, T id) {
    doSomething();
    return true;
}

public static <D extends Dealer<T>, T> boolean deleteById(D dealer, T id) {
    doSomething();
    return true;
}
于 2013-10-27T16:44:00.877 に答える
0

Object.Classメソッドはあなたの解決策だと思います

于 2013-10-27T16:41:59.687 に答える
0

型消去と Java ジェネリックが機能する方法により、できる最善のことは次のとおりです。

public class Test {

    public static <T extends WithId<B>, B> boolean foo(T obj, B id) {
        obj.id = id;
        return true;
    }

    public static void main(String[] args) {
        Bla<String> bar = new Bla<String>();
        foo(bar, "123"); // Works
        foo(bar,  123 ); // Fails
    }

}

abstract class WithId<T> {
    T id;
}

class Bla<T> extends WithId<T> {
    // ...
}
于 2013-10-27T17:43:21.063 に答える