java 泛型中class<T> 和T的区别是什么?
public <T> boolean edit(T entity) 和public <T> T get(Class<T> c, Serializable id)中这两种参数的定义和调用有什么区别?
public <T> boolean edit(T entity){ return true; } public <T> void get(Class<T> entity,Serializable id){ }
找到答案了:
Class 首先是个Class对象,描述的意思是构建T这个类型的模板
T 是个T对象,描述的意思是这个对象是T这个类型。
打个比方,T=人的时候,T a 表示的意思是:a=具体某个人,具体某个人可能是张三可能是李四……(好土);
Class a表示的意思是:a=人类,这个种族。有点近似其他语言的type的意思。
什么地方使用呢:你只能提供这个type却没办法提供一个具体的实例的时候(你只能告诉卖家我要买苹果却不能拿一个苹果给他看告诉它我要买这个东西的时候)。网上常见的例子就是利用反射实例化1个T对象...etc.