`

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

    博客分类:
  • java
阅读更多

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;
 }
}

分享到:
评论

相关推荐

    Java语言程序设计的课程设计项目——利用Java实现地球系动画完整实现实例(第3部分).pdf

    数组类不能够通过普通的反射方式来创建一个实例。 如 果 强 行 执 行 imageArrayInstance.newInstance(); 就 会 得 到 下 面 的 错 误 : java.lang.InstantiationException。 (2)Java 中的数组为静态的 1) 所谓...

    Java开发技术大全 电子版

    9.2用Class类来加载对象289 9.3使用getClass()方法获取类信息290 9.4使用类标记292 9.5使用关键字instanceof判断所属类292 9.6利用反射获取运行时类信息293 9.6.1使用isInstance()方法判断所属类294 9.6.2获取...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    文件读与写详解 心灵鸡汤 文件修改详解 字符编码转换详解 函数与函数式编程 函数式编程之参数详解 局部变量与全局变量作用域 递归 函数式编程与函数不同 高阶函数 第4周 上节内容回顾 心灵鸡汤 装饰器详解 装饰器...

    Spring.3.x企业应用开发实战(完整版).part2

    7.2.2 一个简单的注解类 7.2.3 使用注解 7.2.4 访问注解 7.3 着手使用@AspectJ 7.3.1 使用前的准备 7.3.2 一个简单的例子 7.3.3 如何通过配置使用@AspectJ切面 7.4 @AspectJ语法基础 7.4.1 切点表达式函数 7.4.2 在...

    Spring3.x企业应用开发实战(完整版) part1

    7.2.2 一个简单的注解类 7.2.3 使用注解 7.2.4 访问注解 7.3 着手使用@AspectJ 7.3.1 使用前的准备 7.3.2 一个简单的例子 7.3.3 如何通过配置使用@AspectJ切面 7.4 @AspectJ语法基础 7.4.1 切点表达式函数 7.4.2 在...

    mfc教程(word版)

    5.3.4.1 有别于SDI的主窗口加载过程 124 5.3.4.2 MDI子窗口、视、文档的创建 125 5.3.4.3 MDI子窗口的初始化和窗口的激活 127 第6章 应用程序的退出 131 6.1 边框窗口对WM_CLOSE的处理 131 6.2 窗口的销毁过程 135 ...

    MFC-李进九 电子书籍完整版

    5.3.4.1 有别于SDI的主窗口加载过程 124 5.3.4.2 MDI子窗口、视、文档的创建 125 5.3.4.3 MDI子窗口的初始化和窗口的激活 127 第6章 应用程序的退出 131 6.1 边框窗口对WM_CLOSE的处理 131 6.2 窗口的销毁过程 135 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    06 django的一个简单应用 07 django静态文件之static 08 django的url控制系统 09 django的urlConf补充 第50章 01 django之视图函数的介绍 02 django视图之redirec 03 django模板之变量 04 django模板之过滤器 05 ...

    webgl编程指南及源码1/2

    多个简单模型组成的复杂模型 311 层次结构模型 313 单关节模型 314 示例程序(JointMode.js) 315 绘制层次模型(draw()) 319 多节点模型 321 示例程序(MultiJointModel.js) 323 绘制部件(drawBox()) ...

    webgl编程指南及源码2/2

    多个简单模型组成的复杂模型 311 层次结构模型 313 单关节模型 314 示例程序(JointMode.js) 315 绘制层次模型(draw()) 319 多节点模型 321 示例程序(MultiJointModel.js) 323 绘制部件(drawBox()) ...

    WebGL编程指南压缩包

    多个简单模型组成的复杂模型 311 层次结构模型 313 单关节模型 314 示例程序(JointMode.js) 315 绘制层次模型(draw()) 319 多节点模型 321 示例程序(MultiJointModel.js) 323 绘制部件(drawBox()) ...

    WebGL编程指南

    多个简单模型组成的复杂模型 311 层次结构模型 313 单关节模型 314 示例程序(JointMode.js) 315 绘制层次模型(draw()) 319 多节点模型 321 示例程序(MultiJointModel.js) 323 绘制部件(drawBox()) ...

    webgl-workshop:米兰的WebGL工作台所使用的教程和示例

    2015年6月在米兰举行的WebGL研讨会 嗨,这是的官方资料库 您需要遵循这些教程的内容 了解这些教程所需的一些先决条件: 仅对编码/ JavaScript有基本了解 需要零3D图形的背景 ...使用漫反射属性更改

Global site tag (gtag.js) - Google Analytics