⑴ java 获取对象的数据类型的方法
使用getClass方法可以获取一个对象的类型类,然后在调用该类的方法可以获取该类的相关信息,比如父类的名字,该类的名字等等:
packagetest;
importjava.lang.reflect.Field;
importjava.lang.reflect.Method;
publicclassDemo2{
Stringusername="sss";
publicstaticvoidmain(String[]args),IllegalAccessException,NoSuchFieldException,SecurityException,NoSuchMethodException{
Demo2t=newDemo2();
if(Demo2.class==t.getClass()){
System.out.println("equal");
}
//获取类名
System.out.println(t.getClass().getName());
//获取父类名
System.out.println(t.getClass().getSuperclass());
//获取类中某个属性
Fieldf=t.getClass().getField("username");
//获取类中某个方法
Methodm=t.getClass().getDeclaredMethod("main",String[].class);
}
}
⑵ 如何通过Java反射获取一个类属性的类型要类型Class<
先获取Method对象
以下仅供参考
packagecom.kidd.test.;
importjava.lang.reflect.Method;
/**
*Helloworld!
*
*/
publicclassMain{
publicstaticvoidmain(String[]args){
Methodmethod1=null;
Methodmethod2=null;
try{
method1=Class.forName("com.kidd.test..Cat").getMethod("getName",(Class<?>[])null);
method2=Class.forName("com.kidd.test..Cat").getMethod("getChilds",(Class<?>[])null);
}catch(NoSuchMethodExceptionex){
ex.printStackTrace();
}catch(SecurityExceptionex){
ex.printStackTrace();
}catch(ClassNotFoundExceptionex){
ex.printStackTrace();
}
if(null!=method1){
System.out.println(method1.getGenericReturnType().getTypeName());
}
if(null!=method2){
System.out.println(method2.getGenericReturnType().getTypeName());
}
}
}
classCat{
privateStringname;
privateCat[]childs;
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicCat[]getChilds(){
returnchilds;
}
publicvoidsetChilds(Cat[]childs){
this.childs=childs;
}
}
⑶ java 什么方法可以看类的类型
importJava.io.BufferedReader;
importjava.io.InputStreamReader;
importjava.lang.reflect.Method;
importjava.lang.reflect.Modifier;
publicclasstest{
publicstaticvoidmain(String[]args)throwsException{
//BufferedReaderbb=newBufferedReader(newInputStreamReader(System.in));
//Stringclassname=bb.readLine();
Classc=Class.forName("ArrayListTest.java");
//-------------------获取方法的详细信息
Methodm[]=c.getDeclaredMethods();
for(inti=0;i<m.length;i++)
{
//--------------------获得方法的名字
System.out.println("方法的名字是:"+m[i].getName());
//--------------------获得方法参数的类型和有几个参数
Classb[]=m[i].getParameterTypes();//获得所有的参数并且存放到数组B中
for(intj=0;j<b.length;j++)
{
System.out.println("参数的类型是"+b[j]);
}
//--------------------获得方法返回值的类型
System.out.println(m[i].getReturnType());//获得方法的返回值类型
//--------------------获得方法的修饰符
intmod=m[i].getModifiers();
System.out.println("方法的修饰符有"+Modifier.toString(mod));
//--------------------获得方法的异常类型
Classe[]=m[i].getExceptionTypes();//获得所有的异常类型存放到数组e中
for(intk=0;k<e.length;k++)
{
System.out.println("方法的异常类型是:"+e[k]);
}
System.out.println("-------------------------------------------------------------------");
}
//----------------------------获得属性的详细信息
}
}
packageClass//测试.com.tc.test.Class的forname方法获得属性信息;
importjava.lang.reflect.Field;
importjava.lang.reflect.Modifier;
publicclasstest{
publicstaticvoidmain(String[]args)throwsClassNotFoundException{
Classc=Class.forName("Class测试.com.tc.test.Class的forname方法获得属性信息.student");//把要使用的类加载到内存中,并且把有关这个类的所有信息都存放到对象c中
Fieldf[]=c.getDeclaredFields();//把属性的信息提取出来,并且存放到field类的对象中,因为每个field的对象只能存放一个属性的信息所以要用数组去接收
for(inti=0;i<f.length;i++)
{
System.out.println("属性的名称是:"+f[i].getName());//获得属性的名字
System.out.println("属性的类型是:"+f[i].getType());//获得属性的类型
intmod=f[i].getModifiers();//获得修饰符的常量总和
System.out.println(mod);
System.out.println("属性的修饰符有:"+Modifier.toString(mod));//modifier类可以根据常量总和去计算到底有哪些修饰符
System.out.println("-------------------------------------------------------");
}
}
}
⑷ Java如何获得一个类里面的各个属性和类型
使用反射可以获取到;
代码如下:
importjava.lang.reflect.Field;//这是需要引入的包
Field[]f=类名.class.getDeclaredFields();//获取该类的字段(public,protected,default(package)access,andprivate)
for(Fieldff:f)//遍历字段
{
System.out.println(ff.getType());//获取字段类型
System.out.println(ff.getName());//获取字段名
}
⑸ 在java中 如何获取变量的类型
java中获取变量的类型可以使用每个类型的getClass()方法来获得,示例如下:
classTest
{
publicstaticvoidmain(String[]args)
{
inti=1;//int类型变量
System.out.println(getType(i));//打印变量类型为int
}
publicstaticStringgetType(Objecto){//获取变量类型方法
returno.getClass().toString();//使用int类型的getClass()方法
}
}
⑹ java怎么根据类名称得到一个类型
Java 提供了Class类来通过类名获取对象。
下面请看示例:
先声明一个Userinfo.java类。
public class Userinfo {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
声明一个主类。
public class Test {
public static void main(String[] args) throws Exception {
@SuppressWarnings("unchecked")
Class<Userinfo> c = (Class<Userinfo>) Class.forName("Userinfo");
//通过newInstance()获取对象实例。
Userinfo u = c.newInstance();
try {
System.out.println(Class.forName("Userinfo"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
⑺ JAVA通过类类型动态获取类型,例如我如何通过string.class获取string这个类型,是
字节码对象是无法直接获取这个类型的,不过Class类中有几种方法你可以参考一下:
isInstance(Object obj)
如果obj是这个字节码对象的子类或者实现类,或者就是这个类的对象,那么直接返回true。
isAssignableFrom(类<?> cls)
确定由此类对象表示的类或接口是否与由指定的Class
类表示的类或接口相同或是超类或类接口。
⑻ 在JAVA中怎么取得一个变量的类型
对于包装类型变量,是可以直接获得的,变量名称.getClass().getName();
示例:
lass Test
{
public static void main(String[] args)
{
int i=1; //int类型变量
System.out.println(getType(i)); //打印变量类型为int
}
public static String getType(Object o){ //获取变量类型方法
return o.getClass().toString(); //使用int类型的getClass()方法
}
}
(8)java获取类的类型扩展阅读
变量的使用注意事项:
Java中的变量必须声明后才能进行使用;
变量的作用域:在一对{}中为有效区间;
需要进行初始化后才能使用变量;
数据类型 变量名 = 初始化值;
变量的使用是通过变量名来访问所指向的内存区域中存储的值。