java 怎么获取t的class

java 怎么获取t的class,第1张

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中与该串一致的属性的数据类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9318502.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存