5

私は次のことを達成しようとしています:私はこの方法を持っています

public String methodName(Userdefinedclass.class,Userdefinedclass obj)
{

//some code 
.........
method(Userdefinedclass.class);
method2(obj);

}

この方法を一般化したい。

ここでの課題は、ここでの引数がユーザー定義であること、つまり変更できることです。だから助けてください。

4

4 に答える 4

6
public <T> String methodName(Class<T> c, T obj) 
{
    method1(c);
    method2(obj);

    return "some string";
}

void method1(Class c) 
{
   // Some stuff.
}
于 2012-11-21T09:01:42.447 に答える
1

これにより、メソッドの署名がそのまま保持されます。

public <T> String  methodName(Class<T> c, T obj)
{
   method(c);
   method2(obj);
}

しかし、私はivanovicの答えを使用します。

于 2012-11-21T09:11:11.973 に答える
1

Generics は型消去であるため、Generic 型の .class を持つことはできません。これは、この場合、ジェネリクスがObjectタイプするために消去されるためです。したがって、「T.class」は機能しません

代わりClass<T>に、クラスを取得してから作業するために使用します

于 2012-11-21T09:06:35.667 に答える
0

関数で使用されるパラメーターを一般化する場合は、空のインターフェイスを作成し、userDefinedClass に強制的に実装させることができます。または、これを実現するために T を使用できます。

于 2012-11-21T09:04:18.573 に答える