简单写个类回顾类加载、反射

public class ReflectUtils {
 /**
  * @param args    
  * @return void   
  * @throws ClassNotFoundException
  * @throws SecurityException
  * @throws NoSuchMethodException
  * @throws InvocationTargetException
  * @throws IllegalArgumentException
  * @throws IllegalAccessException
  * @throws InstantiationException
  * @throws
  * @Author:qqulijun@163.com @2014-11-10下午3:22:49
  */
 public static void main(String[] args) throws Exception {
  car c=new car("劳斯莱斯","褐色",10);
  c.toprint();
  /** 通过编程的方式对jvm类信息对象直接进行操作。 **/
  /** 类装载器就是寻找类的字节码文件并构造出类在jvm内部表示对象的组件。 **/
  ClassLoader loader=Thread.currentThread().getContextClassLoader();
  System.out.println("current loader(系统类装载器):"+loader);
  System.out.println("current parent loader(扩展类装载器):"+loader.getParent());
  /** 根装载器在java中找不到,由C++编写,固然返回null **/
  System.out.println("current parent parent loader(根装载器-->负责装载jre的核心类库):"+loader.getParent().getParent());
  /** 通过指定的全限定类com.caishijie.gateway.util.car来装载car类对应的反射实例。 **/
  Class<?> clazz=loader.loadClass("com.caishijie.gateway.util.car");
  Constructor cons=clazz.getDeclaredConstructor((Class[])null);
  c=(car)cons.newInstance();
  
  System.out.println(ClassUtils.getShortName(clazz));
//  Class<?> ccc= (Class<?>) ((ParameterizedType).getGenericSuperclass()).getActualTypeArguments()[0];
  
  Method m1=clazz.getMethod("setBrand", String.class);
  m1.invoke(c, "劳斯莱斯");
  
  Method m2=clazz.getMethod("setColor", String.class);
  m2.invoke(c, "褐色");
  
  Method m3=clazz.getMethod("setSize", int.class);
  m3.invoke(c, 10);
  
  c.toprint();
  
 }

}
class car{
 private String brand;
 private String color;
 private int size;
 
 public car(){}
 
 public car(String brand,String color,int size){
  this.brand=brand;
  this.color=color;
  this.size=size;
 }
 
 
 public void toprint(){
  System.out.println(brand+"  "+color+"  "+size);
 }

 public String getBrand() {
  return brand;
 }

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

 public String getColor() {
  return color;
 }

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

 public int getSize() {
  return size;
 }

 public void setSize(int size) {
  this.size = size;
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值