黑马程序员——JAVA基础-反射练习

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

 1 import java.lang.reflect.*;
 2
 3 class reflectDemo
 4 {
 5     public static void main(String[] args) throws Exception
 6     {
 7         String s="Hello World";
 8                 //创建Class对象的三种方式。
 9         Class c1=String.class;
10         Class c2=s.getClass();
11         Class c3=Class.forName("java.lang.String");//使用较多
12         System.out.println("String.class==s.getClass():"+(c1==c2));
13         System.out.println("String.class==Class.forName:"+(c1==c3));
14
15         System.out.println(Integer.TYPE==int.class);
16         Constructor con=String.class.getConstructor(StringBuffer.class);
17
18         String s2=(String)con.newInstance(new StringBuffer("dfdf"));
19         System.out.println(s2);
20         System.out.println("____________");
21
22         ReflectPoint pt1=new ReflectPoint(4,8);
23         Field fieldy=pt1.getClass().getField("y");//这个方法只可获取到公共的成员变量
24         System.out.println(fieldy.get(pt1));
25
26
27         Field fieldx=pt1.getClass().getDeclaredField("x");//该方法可以获取到私有的成员变量,但是无法获取
28         fieldx.setAccessible(true);//必须使用暴力访问,才可以访问private修饰的成员变量
29         System.out.println(fieldx.get(pt1));
30
31         //将Sting的成员变量中的b都换为a.
32         changeStringValue(pt1);
33         System.out.println(pt1);
34
35         System.out.println("____________");
36         //使用反射得到方法,调用str1.char(1)
37         Method methodCharAt=String.class.getMethod("charAt",int.class);
38         System.out.println(methodCharAt.invoke(s,1));
39
40         //
41         if(args.length==1){
42             String startingClassName=args[0];
43             Method mainMethod=Class.forName("startingClassName").getMethod("main",String[].class);
44             //mainMethod.invoke(null, new Object[]{new String[]{"12","131"}});
45             mainMethod.invoke(null, (Object)new String[]{"12","131"});
46
47         }
48         int[] it1=new int[3];
49         int[] it2=new int[4];
50         String[] str1=new String[4];
51         String[][] str2=new String[3][2];
52         System.out.println(it1.getClass()==it2.getClass());
53         //System.out.println(str1.getClass()==str2.getClass());
54         System.out.println(str2.getClass().getName());
55         System.out.println(it1.getClass().getName());
56         System.out.println(it1.getClass().getSuperclass().getName());
57
58     }
59     private static void changeStringValue(Object obj)throws Exception{
60         Field[] fields=obj.getClass().getFields();
61         for(Field field:fields){
62             //if(field.getType().equals(String.class))
63             if(field.getType()==String.class){
64                 String oldValue=(String)field.get(obj);
65                 String newValue=oldValue.replace(‘b‘,‘a‘);
66                 field.set(obj,newValue);
67             }
68         }
69
70     }
71 }
72 class ReflectPoint
73 {
74     private int x;
75     public int y;
76     public String st1="ball";
77     public String st2="basketball";
78     public String st3="itcast";
79     ReflectPoint(int x,int y){
80         this.x=x;
81         this.y=y;
82     }
83     public String toString(){
84         return st1+"  "+st2+"  "+st3;
85     }
86 }
87 class TestArguments
88 {
89     public static void main(String[] args){
90         for(String sr:args){
91             System.out.println("调用主函数:"+sr);
92         }
93     }
94 }    
时间: 2024-10-29 19:11:23

黑马程序员——JAVA基础-反射练习的相关文章

黑马程序员——java基础——反射

 黑马程序员--java基础--反射 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射 其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员. 反射就是把Java类中的各种成分映射成相应的java类. 简单说:反射技术可以对一个类进行解剖. 反射的基石-->Class类 1.java中的类是用来描述一类事物的共性,该类事物有什么属性,没有什么属性

黑马程序员-java基础-反射基础

------- android培训.java培训.期待与您交流! ---------- java的反射机制是java的特性之一,反射机制是构建框架技术的基础所在,使用反射可以使程序更加灵活,避免将程序写死在代码里.相对于很多初学者只接触过java基础的人,反射还是一个很朦胧难懂的概念,下面我们就来说一下反射的一些应用. java反射机制是指在运行状态中,动态获取信息以及动态调用对象方法的功能.java反射有3个动态性质:1.运行时生成对象实例,2.运行期间调用发放,3.运行时更改属性. 那么反射

黑马程序员----java基础--反射机制

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.反射的基本描述 Java反射机制是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象方法的功能称为java语言的反射机制.动态获取类中信息,就是java反射.可以理解为对类的解剖.如果想要对指定名称的字节码文件进行加载并获取其中的内容并调用,这时就使用到了反射技术. 简单一

黑马程序员——JAVA基础-反射

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 反射是在运行状态中,对于任意一个类(class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都只能都调用它的任意一个 方法和属性,这种动态获取的信息一级动态调用对象的方法的功能呢个称为java 的反射机制. 反射其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象, 并将字节码文件中的内容都封装成对象,这样便于操作这些成员.就是把JAVA类中的各种成

黑马程序员-java基础-反射

java.lang.Class类的实例代表java应用程序运行时加载的.class文档. 其构造函数: private Class() {} 说明我们无法创建Class对象,Class对象是有JVM自动产生,每个.class文档加载后,JVM会自动生成对应的Class对象. 什么时候加载.class文件进内存 1,用Class.forName()或者类加载器(Class claz = fu.class 没有执行static{}块??) 2,用 new 生成对象时 注意:用类声明参考名称并不会加载

黑马程序员——Java基础---反射Class类、Constructor类、Field类

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 反射的应用场景 一.概述 反射技术: Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为java语言的

黑马程序员——Java基础---IO(下)

黑马程序员——Java基础---IO(下) ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java除了基本的字节流.字符流之外,还提供了File类.properties类.打印流.序列流等和输入输出相关的类,它们能够帮助我们更好的处理信息.下面将对它们进行简单的介绍. 一.正

黑马程序员——Java基础---集合框架工具类

黑马程序员——Java基础<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------ 一.概述 Java为操作Set.List和Map提供了一系列工具类,主要有Collections和Arrays.这两个工具类的特点:类中的方法都是静态的,不需要创建对象,直接使用类名调用即可.Collections:是集合对象

黑马程序员——java基础——多线程

 黑马程序员--java基础--多线程 ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 进程:是一个正在执行中的程序.每一个进程执行都有一个执行顺序.该顺序是一个执行路径,或者叫一个控制单元. 线程:就是进程中的一个独立的控制单元.线程在控制着进程的执行.一个进程中至少有一个线程. 一个进程至少有一个线程在运行,当一个进程中出现多个线程时,就称这个应用程序是多线程应用程序,每个线程在栈区中都有自己的执行空间,自己的方法区.自己的变量.