Java反射是什么

  介绍

这篇文章给大家分享的是有关Java反射是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。

<强> 1,类的简单介绍

类类的类表示正在运行Java的应用程序中的类和接口。枚举是一种类,一个注解是一种接口,每个数组也属于一个反映为类对象的类,该对象由具有相同元素类型和维数的所有数组共享。原始Java类型(布尔、字节、字符,短,int,长,浮点数和双精度数),和关键字空白也表示为类对象。

摘自jdk1.8中文版,刚开始看可能不懂,现在逐句来解释一下。

第一句话:一个类被加载以后,JVM就会在内存中给创建一个对应类的类对象。

第二句话:类型相同的对象,维数相同的数组(不管长度)共享的是同一个内存中类的对象。

第三句话:上面这些原始的类型,也会在内存中有一个与之对象的类对象

包com.dingyu;
  
  进口org.junit.Test;/* *
  *类的简单使用方法
  *
  * @author 70241
  *
  */公开课ClassDemo {
  @Test
  公共空间classTest1 () {
  尝试{
  类class1=forname (“com.dingyu.User");//第一种获取类对象的方法
  用户用户=新用户();
  类class2=user.getClass();//第二种获取类对象的方法
  类class3=User.class;//第三种获取类对象的方法
  System.out.println(“接下来判断到底同一类的不同对象的类对象是不是同一个:“
  + (class1.hashCode ()==class2.hashCode(),和class1.hashCode ()==class3.hashCode ()));
  
  }捕捉(ClassNotFoundException e) {
  e.printStackTrace ();
  }
  }
  
  @Test
  公共空间classTest2 () {
  String [] s1=新的字符串[10];
  String [] s2=新的字符串[30];
  String [] [] s3=新的字符串[3][30];
  .hashCode System.out.println (s1.getClass () ()==s2.getClass () .hashCode ());
  .hashCode System.out.println (s1.getClass () ()==s3.getClass () .hashCode ());
  
  }
  }

癑ava反射是什么"

癑ava反射是什么"

2。类获取类的属性,构造器,方法和注解的简单使用

包com.dingyu;      进口java.lang.annotation.Annotation;   进口java.lang.reflect.Constructor;   进口java.lang.reflect.Field;   进口java.lang.reflect.Method;      进口org.junit.Test;/* *   *类的简单用法   *   * @author华中   *   */公开课ClassDemo02 {      @Test   公共空间usingClass()抛出异常{      类userClass=forname (“com.dingyu.User");//获得类名   System.out.println (userClass.getName());//获得全类名   System.out.println (userClass.getSimpleName());//获得类名//获得属性   ?[]字段userClass.getDeclaredFields();//获得所有的属性   (字段字段:字段){   System.out.println (field.getName ());   }      System.out.println (userClass.getDeclaredField (“id") . getname());//获得指定的属性//获得方法   方法[]方法=userClass.getDeclaredMethods();//获得所有的方法   (方法方法:方法){   System.out.println (method.getName ());   }   方法方法=userClass.getDeclaredMethod (“setId" int.class);//获得指定的方法,前面方法名,后面方法的参数   System.out.println (method.getName ());//获得构造器   构造函数[]构造函数=userClass.getDeclaredConstructors ();   System.out.println (constructors.length);   构造函数构造函数=userClass.getDeclaredConstructor (int。类,字符串。类,int.class);//获得指定的构造器,需要指定构造的参数   System.out.println (constructor.getName ());//获得注解   注释注释[]=userClass.getAnnotations ();   (注释注释:注释){   System.out.println(注释);   }//指定注解名   MyAnnotation注释=(MyAnnotation) userClass.getDeclaredAnnotation (MyAnnotation.class);   System.out.println(注释);   }   }

3。类动态的调用构造器,方法,修改属性

包com.dingyu;      进口java.lang.reflect.Constructor;   进口java.lang.reflect.Field;   进口java.lang.reflect.Method;      进口org.junit.Test;/* *   *使用反射动态的调用构造器,方法,修改属性   * @author 70241   *   */公开课ClassDemo03 {   @Test   @SuppressWarnings (“all")   公共空间usingClass()抛出异常{   类class1=forname (“com.dingyu.User");//使用反射去调用构造器   用户user1=(用户)class1.newInstance();//调用的是无参的      构造函数构造函数=class1.getDeclaredConstructor (int.class、String.class int.class);//获得有参的构造器   用户user2=(用户)constructor.newInstance (04,“dingyu", 20);//动态生成对象//使用反射去调用方法   方法methodSetId=class1.getDeclaredMethod (“setId" int.class);   methodSetId。调用(user1, 02);//执行user1中的setId,后面是给的参数   System.out.println (user1.getId ());//使用反射去修改属性的值   字段字段=class1.getDeclaredField (“age");   field.setAccessible(真正);//因为年龄是私有的,加上这句就表示这个属性不需要做安全检查   字段。集(user1, 20);   System.out.println (field.get (user1));   System.out.println (user1.getAge ());            }   }

Java反射是什么