首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java反照实例化对象和常规方法实例化对象

2013-07-29 
Java反射实例化对象和常规方法实例化对象1.一个car类package java_foundation.test_reflectpublic class

Java反射实例化对象和常规方法实例化对象

1.一个car类

package java_foundation.test_reflect;

public class Car {
?private String brand;
?private String color;
?private int maxSpeed;
?
?/**
? * 创建一个新的实例Car.
? *
? */
?public Car() {
??
?}

?
?/**
? * 创建一个新的实例Car.
? *
? * @param brand
? * @param color
? * @param maxSpeed
? */
?public Car(String brand, String color, int maxSpeed) {
??super();
??this.brand = brand;
??this.color = color;
??this.maxSpeed = maxSpeed;
?}
?
?public void introduce() {
??System.out.println("brand:"+brand+";color:"+color+";maxSpeed:"+maxSpeed);
?}


?public String getBrand() {
??return this.brand;
?}


?public void setBrand(String brand) {
??this.brand = brand;
?}


?public String getColor() {
??return this.color;
?}


?public void setColor(String color) {
??this.color = color;
?}


?public int getMaxSpeed() {
??return this.maxSpeed;
?}


?public void setMaxSpeed(int maxSpeed) {
??this.maxSpeed = maxSpeed;
?}
}

2.用两种方式实例化对象

package java_foundation.test_reflect;

import java.lang.reflect.Constructor;
import java.lang.reflect.Method;

@SuppressWarnings(value={"unchecked","rawtypes"})
public class RelectTest {

?/**
? * @creationDate. 2013-7-20 上午12:11:14
? * @param args
? */

?public static void main(String[] args) throws Throwable{
??// TODO Auto-generated method stub
??Car carA = initByCommon();
??carA.introduce();
??Car carB = initByDefaultConstructor();
??carB.introduce();
?}
?
?/**
? * 常规实例化对象
? * @creationDate. 2013-7-20 上午12:42:52
? * @return
? */
?public static Car initByCommon(){
??Car car = new Car();
??car.setBrand("红旗A");
??car.setColor("红色");
??car.setMaxSpeed(300);
??return car;
?}
?
?/**
? * 通过反射实例化对象
? * @creationDate. 2013-7-20 上午12:43:29
? * @return
? * @throws Throwable
? */
?public static Car initByDefaultConstructor() throws Throwable{
??// 获取类对象
??ClassLoader loader = Thread.currentThread().getContextClassLoader();
??Class clazz = loader.loadClass("java_foundation.test_reflect.Car");
??
??// 获取构造器对象
??Constructor cons = clazz.getDeclaredConstructor((Class[])null);
??// 获得实例化对象
??Car car = (Car)cons.newInstance();
??
??// 获得反射方法
??Method setBrand = clazz.getMethod("setBrand", String.class);
??// 调用实例对象的相应方法
??setBrand.invoke(car, "红旗B");
??
??// 同理
??Method setColor = clazz.getMethod("setColor", String.class);
??setColor.invoke(car, "黑色");
??
??// 同理
??Method setMaxSpeed = clazz.getMethod("setMaxSpeed", int.class);
??setMaxSpeed.invoke(car, 200);
??
??return car;
?}
}

热点排行