简单写个类回顾类加载、反射
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;
}
}
推荐阅读
-
PHP通过反射动态加载第三方类和获得类源码的实例
-
08#.Java SE中:JAVA基础中的 类的加载器、反射、暴力反射
-
00024.03 反射:使用类加载器来加载类路径下的资源文件(包含读取配置文件)
-
java的反射和它的类加载机制
-
Java 类加载过程-简单
-
(探讨)无包名类加载原理(附赠)反射调用无包名类及其方法
-
类加载机制与反射
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第24章:反射与简单Java类:课时111:单级属性赋值
-
阿里Java学习路线:阶段 1:Java语言基础-Java语言高级特性:第24章:反射与简单Java类:课时110:属性自动赋值实现思路
-
PHP实现的简单路由和类自动加载功能