public ABC (T t){ System.out.println(t.getClass());//获取类的信息. } }class D{ //空类. } public class JavaDemo { public static void main(String[] args) { new ABC(new D());
} } 输出:class com.w1520.JavaDemo.D
不继承,貌似不能。class B extends T<X> { }这种情况,即使在A里面写代码,也是能够获取X的具体信息的。之所以这种方式可以,那是因为在编译的时候,<X>的信息,已经编译到了B.class里面,成为了B.class的一部分。而你new A<X>()或者new A<Y>()的时候,<X><Y>只存在于运行期,并没有被编译到A.class里面。所以无法反射出来
不能直接new一个T的,如果只有类被声明<T>,那么取不到T的class。
这个类的方法被传递了test(T t)这样参数得时候,通过getclass或取
示例:
package com.w1520.JavaDemo;/**
* 测试.
*
* @author puruidong
* @version 2013.2.25
*/
class ABC<T>{
public ABC (T t){
System.out.println(t.getClass());//获取类的信息.
}
}class D{
//空类.
}
public class JavaDemo {
public static void main(String[] args) {
new ABC(new D());
}
}
输出:class com.w1520.JavaDemo.D
}这种情况,即使在A里面写代码,也是能够获取X的具体信息的。之所以这种方式可以,那是因为在编译的时候,<X>的信息,已经编译到了B.class里面,成为了B.class的一部分。而你new A<X>()或者new A<Y>()的时候,<X><Y>只存在于运行期,并没有被编译到A.class里面。所以无法反射出来
String... param) throws SQLException {
ResultSet rs = null;
rs = dbUtil.simplquery(querysql, param);
return callback.RsCallback(rs);
}在实际开发中我们需要用同一个方法来操作所有的业务bean(增删改查),而bean类不可能就一个所以需要使用泛型来处理,这就是泛型的优点
public void graphTest(这里需要传递一个类){
类 a = (类)方法(类.class);
}
想让这个类是个可变参数,怎么搞?
{
public void graphTest(T t){
t.getClass();
}
}
这样不行么
Class<T> entityClass = null;
Type t = getClass().getGenericSuperclass();
if(t instanceof ParameterizedType){
Type[] p = ((ParameterizedType)t).getActualTypeArguments();
entityClass = (Class<T>)p[0];
}
public Class<?> getType(){
T t = (T) new Object();
return t.getClass();
}不知道这样行不行因为T是类型,所有先实例化T然后获取类型