反射的方法没法运行怎么办,报NoSuchMethodException
Topic sourcepackage com.company;
import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
class clazz implements Serializable{
private String name;
private int age;
public static void out(){
System.out.println("clazz类out方法运行了");
}
}
public class serialization {
public static void main(String[] args) throws IOException {
ByteArrayOutputStream buffer=new ByteArrayOutputStream();
try(ObjectOutputStream objectOutputStream=new ObjectOutputStream(buffer)){
objectOutputStream.writeInt(50);
objectOutputStream.writeUTF("String");
objectOutputStream.writeObject(new clazz());
try {
objectOutputStream.writeObject(Class.forName("com.company.Person"));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
System.out.println(Arrays.toString(buffer.toByteArray()));
ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(buffer.toByteArray());
try(ObjectInputStream objectInputStream=new ObjectInputStream(byteArrayInputStream)){
System.out.println(objectInputStream.readInt());
System.out.println(objectInputStream.readUTF());
Object object;
try {
System.out.println(object=objectInputStream.readObject());
((clazz)object).out();
System.out.println(object=objectInputStream.readObject());
try {
Method method=object.getClass().getMethod("m1");
try {
method.invoke(object);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
}
- 1
笑川之主
serialization.java
Person.java