2.Sprng-IoC-Java反射例子

1.Car.java

 1 package com.jike.spring.chapter03.reflect;
 2
 3 public class Car {
 4     private String brand;
 5
 6     private String color;
 7
 8     private int maxSpeed;
 9
10     //1.默认构造函数
11     public Car(){
12         System.out.println("init car!!");
13         }
14
15     //2.带参构造函数
16     public Car(String brand,String color,int maxSpeed){
17         this.brand = brand;
18         this.color = color;
19         this.maxSpeed = maxSpeed;
20     }
21
22     //3.未带参的方法
23     public void introduce() {
24        System.out.println("brand:"+brand+";color:"+color+";maxSpeed:"+maxSpeed);
25     }
26
27     public String getBrand() {
28         return brand;
29     }
30
31     public void setBrand(String brand) {
32         this.brand = brand;
33     }
34
35     public String getColor() {
36         return color;
37     }
38
39     public void setColor(String color) {
40         this.color = color;
41     }
42
43     public int getMaxSpeed() {
44         return maxSpeed;
45     }
46
47     public void setMaxSpeed(int maxSpeed) {
48         this.maxSpeed = maxSpeed;
49     }
50 }

2.ReflectTest.java

 1 package com.jike.spring.chapter03.reflect;
 2
 3 import java.lang.reflect.Constructor;
 4 import java.lang.reflect.Method;
 5
 6
 7 public class ReflectTest {
 8
 9
10     public static Car  initByDefaultConst() throws Throwable
11     {
12         //1.通过类装载器获取Car类对象
13         ClassLoader loader = Thread.currentThread().getContextClassLoader();
14         Class clazz = loader.loadClass("com.jike.spring.chapter03.reflect.Car");
15
16         //2.获取类的默认构造器对象并实例化Car
17         Constructor cons = clazz.getDeclaredConstructor((Class[])null);
18         Car car = (Car)cons.newInstance();
19
20         //3.通过反射方法设置属性
21         Method setBrand = clazz.getMethod("setBrand",String.class);
22         setBrand.invoke(car,"奔驰");
23         Method setColor = clazz.getMethod("setColor",String.class);
24         setColor.invoke(car,"黑色");
25         Method setMaxSpeed = clazz.getMethod("setMaxSpeed",int.class);
26         setMaxSpeed.invoke(car,200);
27         return car;
28     }
29
30     public static Car initByParamConst()  throws Throwable{
31         //1.通过类装载器获取Car类对象
32         ClassLoader loader = Thread.currentThread().getContextClassLoader();
33         Class clazz = loader.loadClass("com.jike.spring.chapter03.reflect.Car");
34
35         //2.获取类的带有参数的构造器对象
36         Constructor cons = clazz.getDeclaredConstructor(new Class[]{String.class,String.class,int.class});
37
38         //3.使参数的构造器对象实例化Car
39         Car car = (Car)cons.newInstance(new Object[]{"宝马","红色",180});
40         return car;
41     }
42
43     public static void main(String[] args) throws Throwable {
44         Car car1 = initByDefaultConst();
45         Car car2 = initByParamConst();
46         car1.introduce();
47         car2.introduce();
48     }
49 }
时间: 2024-10-24 14:56:28

2.Sprng-IoC-Java反射例子的相关文章

非常好的Java反射例子

1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时对象所属的类 2)可以判断运行时对象所具有的成员变量和方法 3)通过反射甚至可以调用到private的方法 4)生成动态代理 3.实现Java反射的类 1)Class:它表示正在运行的Java应用程序中的类和接口 2)Field:提供有关类或接口的属性信息,以及对它的动态访问权限 3)Constructor:提供关于类的单个构造方法的信息以及对它的访问权限 4)Method:提供关于类或

【转】非常好的Java反射例子

转自 http://www.douban.com/note/306848299/ 原文: 1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时对象所属的类 2)可以判断运行时对象所具有的成员变量和方法 3)通过反射甚至可以调用到private的方法 4)生成动态代理 3.实现Java反射的类 1)Class:它表示正在运行的Java应用程序中的类和接口 2)Field:提供有关类或接口的属性信息,以及对它的动态访问权限 3)Constru

java反射例子详解

1.通过一个对象获得完整的包名和类名 Java代码   package Reflect; /** * 通过一个对象获得完整的包名和类名 * */ class Demo{ //other codes... } class hello{ public static void main(String[] args) { Demo demo=new Demo(); System.out.println(demo.getClass().getName()); } } [运行结果]:Reflect.Demo

Java反射及 IoC原理、内省机制

JAVA反射及IoC原理.JAVA内省 1. 反射 反射是框架设计的灵魂,使用前提:必须先得到代表的字节码的Class,Class类用于表示.class文件(字节码文件). 1.1 反射概述 主要指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. Java反射机制:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性. 1.2 反射机制的作用 在运行时判断任

java反射机制例子,反编译,以及通过读取配置文件降低耦合

本文不多做文字描述,通过代码可以说明一切,简单直观. //这边以反编译String类为例子,将反编译结果输入到文件. 1.ReflectTest.java 1 import java.io.File; 2 import java.io.FileReader; 3 import java.io.FileWriter; 4 import java.lang.reflect.Constructor; 5 import java.lang.reflect.Field; 6 import java.lan

java反射小例子

package com.txwsqk.reflect; public class Car { private String brand; private String color; private int maxspeed; public Car(){} public Car(String brand, String color, int maxspeed){ this.brand = brand; this.color = color; this.maxspeed = maxspeed; }

Java反射机制详解(3) -java的反射和代理实现IOC模式 模拟spring

IOC(Inverse of Control) 可翻译为“控制反转”,但大多数人都习惯将它称为“依赖注入”.在Spring中,通过IOC可以将实现类.参数信息等配置在其对应的配置文件中,那么当 需要更改实现类或参数信息时,只需要修改配置文件即可,这种方法在上例的基础上更进一步的降低了类与类之间的耦合.我们还可以对某对象所需要的其它对象进 行注入,这种注入都是在配置文件中做的,Spring的IOC的实现原理利用的就是Java的反射机制, Spring还充当了工厂的角色,我们不需要自己建立工厂类.S

Java反射的例子

1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时对象所属的类 2)可以判断运行时对象所具有的成员变量和方法 3)通过反射甚至可以调用到private的方法 4)生成动态代理 3.实现Java反射的类 1)Class:它表示正在运行的Java应用程序中的类和接口 2)Field:提供有关类或接口的属性信息,以及对它的动态访问权限 3)Constructor:提供关于类的单个构造方法的信息以及对它的访问权限 4)Method:提供关于类或

java反射机制学习笔记及例子代码

Java 反射的API 反射中常常用的几个类如下所示: java.lang 包中: --Class 类:代表一个类 Java 中,无论生成某个类的多少个对象,这些对象都会对应同一个 Class 对象 Java.lang.reflect 包中: --Field 类:代表类的成员变量(类的属性) --Method 类:代表类的方法,一个方法对应一个 Method 对象 --Constructor 类:代表类的构造方法 --Array 类:提供动态创建数组,以及访问数组的元素的静态方法 利用反射机制调

java反射机制之Method invoke执行调用方法例子

昨天在群里跟大家讨论了下java反射调用可变参数的问题,这个问题起因是我们需要反射调用另一个部门提供的方法,我同事说java不能反射调用可变参数的方法,于是我写了个demo证明了他这个观点的错误.但是测试过程中,有一点我不明白,就是反射调用可变参数的方法时,为什么一定要保证传入的参数数组长度为1,在群里跟大家讨论了很多,没有得到确切的答案,参照网上大牛写的东西和我自己跟源码的过程,记录如下: 1.两个类,一个父类,一个子类 [java] view plain copy print? packag