我正在尝试实现以下目标:我有这个方法
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.
}
泛型是类型擦除,因此您不能拥有 .class 泛型类型。那是因为在这种情况下泛型被擦除以Object
键入。因此 `T.class' 不起作用
所以改为使用Class<T>
来获取课程,然后一起工作
这使您的方法签名保持不变:
public <T> String methodName(Class<T> c, T obj)
{
method(c);
method2(obj);
}
但我会使用伊万诺维奇的回答。
如果您想概括函数中使用的参数,您可以创建一个空接口并强制 userDefinedClass 实现它。或者您可以使用 T 来实现这一点