package com.spasvo.test;
import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.nio.file.Files;
class MyClassLoader extends ClassLoader{
@Override
protected Class<?> findClass(String name) throws ClassNotFoundException {
File file = new File("E:\\Person.class");
try {
byte[] bytes = Files.readAllBytes(file.toPath());
return defineClass("Person",bytes,0,bytes.length);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
public class Main {
public static void main(String[] args) {
MyClassLoader loader = new MyClassLoader();
Class<?> cl = null;
try {
cl = loader.loadClass("Person");
Method method = cl.getMethod("ifElseTest",int.class);
Object instance = cl.newInstance();
method.invoke(instance,12);
} catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException | InstantiationException | InvocationTargetException e) {
e.printStackTrace();
}
}
}
测试类
public class Person {
public String name;
public int age;
public void funcForTest(String testParma1,int testParma2){
for (int i = 0; i < 10; i++) {
System.out.println("for test");
}
}
public void ifElseTest(int name){
if(name == 1){
System.out.println("if test");
}else if(name == 2){
System.out.println("else if test");
}else {
System.out.println("else test");
}
}
public void whileTest(){
while (true){
System.out.println("while test");
}
}
public void tryCatchTest(){
try {
System.out.println("try test");
}catch (Exception e){
System.out.println("catch test");
}finally {
System.out.println("finally test");
}
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
运行结果
else test
Process finished with exit code 0