私は次のことを達成しようとしています:私はこの方法を持っています
public String methodName(Userdefinedclass.class,Userdefinedclass obj)
{
//some code
.........
method(Userdefinedclass.class);
method2(obj);
}
この方法を一般化したい。
ここでの課題は、ここでの引数がユーザー定義であること、つまり変更できることです。だから助けてください。
私は次のことを達成しようとしています:私はこの方法を持っています
public String methodName(Userdefinedclass.class,Userdefinedclass obj)
{
//some code
.........
method(Userdefinedclass.class);
method2(obj);
}
この方法を一般化したい。
ここでの課題は、ここでの引数がユーザー定義であること、つまり変更できることです。だから助けてください。
public <T> String methodName(Class<T> c, T obj)
{
method1(c);
method2(obj);
return "some string";
}
void method1(Class c)
{
// Some stuff.
}
これにより、メソッドの署名がそのまま保持されます。
public <T> String methodName(Class<T> c, T obj)
{
method(c);
method2(obj);
}
しかし、私はivanovicの答えを使用します。
Generics は型消去であるため、Generic 型の .class を持つことはできません。これは、この場合、ジェネリクスがObject
タイプするために消去されるためです。したがって、「T.class」は機能しません
代わりClass<T>
に、クラスを取得してから作業するために使用します
関数で使用されるパラメーターを一般化する場合は、空のインターフェイスを作成し、userDefinedClass に強制的に実装させることができます。または、これを実現するために T を使用できます。