1 public Type getGenericSuperclass()
用来返回表示当前Class 所表示的实体(类、接口、基本类型或 void)的直接超类的Type。如果这个直接超类是参数化类型的,则返回的Type对象必须明确反映在源代码中声明时使用的类型。比如:
import javalangreflectParameterizedType;
public class GT1 extends GT2<Integer>{
public static void main(String[] args) {
Systemoutprintln(((ParameterizedType)new GT1()getClass()getGenericSuperclass()));
}
}
则输出结果即为:
GT2<javalangInteger>
如果此Class代表的是Object 类、接口、基本类型或 void,则返回 null。。如果此对象表示一个数组类,则返回表示 Object 类的 Class 对象。
2 public Type[] getGenericInterfaces()
与上面那个方法类似,只不过Java的类可以实现多个接口,所以返回的Type必须用数组来存储。
以上两个方法返回的都是Type对象或数组,在我们的这个话题中,Class都是代表的参数化类型,因此可以将Type对象Cast成ParameterizedType对象。而 ParameterizedType对象有一个方法, getActualTypeArguments()。
public Type[] getActualTypeArguments()
用来返回一个Type对象数组,这个数组代表着这个Type声明中实际使用的类型。接着使用上面的例子:
import javalangreflectParameterizedType;
public class GT1 extends GT2<Integer>{
public static void main(String[] args) {
Systemoutprintln(((ParameterizedType)new GT1()getClass()getGenericSuperclass())getActualTypeArguments()[0]);
}
}
反射可以获取到属性类型,Field类里面有个方法,getType()就是获取属性类型的。。。
下面是个示例代码。。。
public static void main(String args[]) {
People peo = new People();
Class cla = Peopleclass;
try {
Field[] fields = clagetFields();
for(Field field:fields){
Class c = fieldgetType();
if(c==Stringclass){
fieldset(peo, "EMPTY");
}else if(c==Integerclass){
fieldset(peo, 0);
}
}
} catch (SecurityException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
eprintStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
主要就是用Class c = fieldgetType();
这个来获取类型。。。。
希望能帮到你。。。仍有问题可以Hi我。。。或者直接追问。。。
这个串和那个属性靠什么对应?
public class fyl {
public static void main(String[] args){
for(String arg:args){
if("weight"equals(arg))
Systemoutprintln(PlaneweightgetClass());
else if("name"equals(arg))
Systemoutprintln(PlanenamegetClass());
else
Systemoutprintln("不存在");
}
}
}
class Plane{
static Integer weight=42;
static String name="plane";
}
不知道你是不是要这样的。记得在运行的时候给main提供参数。
给你介绍3种获得类对象方式:
第一种方式:通过类本身来获得对象
Class classname = this getClass();
第二种方式:通过子类的实例获取父类对象
ClassName cn = new ClassName();
UserClass = cngetClass();
Class SubUserClass = UserClassgetSuperclass();
第三种方式:通过类名加class获取对象
Class ForClass = ClassName class ;(类在包中的路径加 class )
第四种方式:通过类名的字符串获取对象
Class ForName = ClassforName( "ClassName" );
这种方式在jdbc中常用到。
以上就是关于java 怎么获取t的class全部的内容,包括:java 怎么获取t的class、反射怎么获取类属性类型、java中,已知一个字符串如何获取class中与该串一致的属性的数据类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)