您的位置:首页 > 编程语言 > Java开发

ioc解析java反摄机制

2012-06-13 09:38 537 查看
package com.ioc;

import java.lang.reflect.Constructor;

import java.lang.reflect.Method;

/**

 * java反射

 *

 */

public class Car {

 private Integer no;

 private String name;

 private String color;

 public Car() {

 }

 public Car(Integer no, String name, String color) {

  this.no = no;

  this.name = name;

  this.color = color;

 }

 public Integer getNo() {

  return no;

 }

 public void setNo(Integer no) {

  this.no = no;

 }

 public String getName() {

  return name;

 }

 public void setName(String name) {

  this.name = name;

 }

 public String getColor() {

  return color;

 }

 public void setColor(String color) {

  this.color = color;

 }

 public static void main(String[] args) throws Exception {

  // 获取类装载器

  ClassLoader loader = Thread.currentThread().getContextClassLoader();

  // 通过类装载器获取对象

  Class clazz = loader.loadClass("com.ioc.Car");

  // 获取类的默认构造器对象

  Constructor cons = clazz.getDeclaredConstructor();// 无参构造函数

  // 实例化对象

  Car car = (Car) cons.newInstance();

  // 有参构造函数

  // Constructor cons = clazz.getDeclaredConstructor(Integer.class,

  // String.class, String.class);

  // Car car = (Car) cons.newInstance(1,"a","b");

  // 通过反射方法设置属性

  Method setNo = clazz.getMethod("setNo", Integer.class);

  setNo.invoke(car, 1);

  Method setColor = clazz.getMethod("setColor", String.class);

  setColor.invoke(car, "黑色");

  Method setName = clazz.getMethod("setName", String.class);

  setName.invoke(car, "别克");

  System.out.println(car.getNo() + "|" + car.getColor() + "|"

    + car.getName());

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息