深入理解classloader
一、获取Class的方法
1.直接用(类名.class)
2.对象.getClass()
3.Class.forName("类的全限定名")
Class c = String[].class;System.out.println("c===>"+c); c = new String[1].getClass(); System.out.println("c===>"+c);//JVM对Array的实际类名编码为: 左括号 + 类别代码 + 类名 try {c = Class.forName("[Ljava.lang.String;");} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}
System.out.println("byte[]: " + byte[].class.getName()); System.out.println("char[]: " + char[].class.getName()); System.out.println("int[]: " + int[].class.getName()); System.out.println("long[]: " + long[].class.getName()); System.out.println("double[]: " + double[].class.getName()); System.out.println("float[]: " + float[].class.getName());
byte[]: [Bchar[]: [Cint[]: [Ilong[]: [Jdouble[]: [Dfloat[]: [F
public class User {private String name;private Integer age;public User(String name, Integer age) {super();this.name = name;this.age = age;}public User() {}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public void sayHello(){System.out.println("Hello,I am "+name+","+age+" years old.");}} //测试类中的方法private static void test2(){ ClassLoader cl=ClassLoader.getSystemClassLoader(); System.out.println("cl===> " + cl); try {Class clazz = cl.loadClass("com.test.jvm.classloader.User"); User user =(User)clazz.newInstance();user.sayHello();} catch (ClassNotFoundException e) {// TODO Auto-generated catch blockSystem.out.println("class com.test.jvm.classloader.User not found!");} catch (InstantiationException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IllegalAccessException e) {// TODO Auto-generated catch blocke.printStackTrace();}