设计一个方法,传入一个class对象,返回这个class的类名,这个需求本身不难,代码如下:
[code="java"]public class GenericsTest {
protected static <E> String getEntityName(Class<E> clazz) {
// TODO Auto-generated method stub
String entityName = clazz.getSimpleName();
Entity entity = clazz.getAnnotation(Entity.class);
if(entity != null && !"".equals(entity.name())){
entityName = entity.name();
}
return entityName;
}
public static void main(String [] args){
GenericsTest g = new GenericsTest();
System.out.println(GenericsTest.getEntityName(g.getClass()));
}
}[/code]
问题在于:如果我将上面的getEntityname方法的泛型参数去掉的话就会报错,编译不通过,我不明白的就是这里的到底有什么作用???我在调用getEntityname的时候并没有给他传递泛型参数,但是却不能没有这个泛型参数,这奇怪啊,欢迎讨论!!!
去掉泛型参数代码如下:
[code="java"]public class GenericsTest {
protected static String getEntityName(Class clazz) {
// TODO Auto-generated method stub
String entityName = clazz.getSimpleName();
Entity entity = clazz.getAnnotation(Entity.class);
if(entity != null && !"".equals(entity.name())){
entityName = entity.name();
}
return entityName;
}
public static void main(String [] args){
GenericsTest g = new GenericsTest();
System.out.println(GenericsTest.getEntityName(g.getClass()));
}
}[/code]