TEST1.JAVA:
Package test;
Import java.io. *; import java.lang.reflect. *;
class AClassLoader extends ClassLoader {public Class loadClass (String name, boolean resolve) throws ClassNotFoundException {Class klass = null; try {klass = findLoadedClass (name); // check whether the class has already been loaded. IF (klass! = Null) {return klass;} byte [] BS = getClassBytes (name); // From a specific source of information, the byte is read. IF (BS! = Null && BS.LENGTH> 0) {Klass = DefineClass (Name, BS, 0, BS.LENGTH);} If (klass == null) {// If the read byte fails, try to Looking for this class in the JDK system API. klass = findSystemClass (name);} if (resolve && klass = null!) {resolveClass (klass);}} catch (IOException e) {throw new ClassNotFoundException (e.toString ());} System.out.println ( " klass == " klass); return klass;} private byte [] getClassBytes (String className) throws IOException {String path = System.getProperty (" java.class.path ") File.separator; path = className.replace ('.', File.separatorchar) ".class"; system.out.println (path); fileinputstream FII = null; try {fis = new fileinputstream (path);} catch (filenotfoundexception e) {system.out. Println (e); return null; // Abandon lookup if the lookup fails Capturing this exception is mainly to filter the JDK system API. } Byte [] bs = new byte [fis.available ()]; fis.read (bs); return bs;}}
Public class test1 {public static void main (string [] args) throws exception {aclassloader loader = new aclassloader (); class c = loadinger.loadclass ("test.a", false); system.out.println (c); Object o = c.newinstance (); system.out.println (o); method m = c.getMethod ("Print", java.lang.string.class); M.Invoke (O, "Bitan");} } A.java
Package test; public class a {public void print (string str) {system.out.println ("Hey," Str ", you finally found me!");} public string toString () {return "I am One A object! ";}}
result:
C: / test> javac -d ./bin ./src/*.java
C: / test> java -classpath ./bin test.test1./bin/test/a.class./bin/java/lang/object.classjava.io.filenotFoundException: ./bin/java/lang/Object.class (The system cannot find the specified path.) Klass == Class Java.lang.Objectklass == Class test.aclass test.a I am an object! ./bin/java/lang/string.classjava.io.filenotfoundexception: ./bin/java/lang/string.class (The system can't find the specified path.) Klass == Class java.lang.String./bin/ Java / lang / system.classjava.io.filenotFoundException: ./bin/java/lang/system.class (The system can not find the specified path.) Klass == Class Java.lang.system./bin/java/lang/ Stringbuilder.classjava.io.filenotFoundException: ./bin/java/lang/stringbuilder.class (The system can not find the specified path.) Klass == Class Java.lang.StringBuilder./bin/java/IO/PrintStream.classjava. IO.FilenotFoundException: ./bin/java/IO/PrintStream.class (The system can't find the specified path.) Klass == Class java.io.printStream Hey, Bitan, you finally found me!
C: / test>