报错:
java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at DesignPattern.DemoObserver.ConcreteObservable.notifyObserver(ConcreteObservable.java:55)
at DesignPattern.DemoObserver.ConcreteObservable.notifyObservers(ConcreteObservable.java:36)
at DesignPattern.DemoObserver.Text.main(Text.java:19)
说明Class没有实例化;
解决办法:
由于没有实例化,可以有如下两种方法:
1、反射方法定义成为static的,故被反射类就不需要实例化;
2、method.invoke(_class.newInstance(), args);
报错:argument type mismatch
参数错误:
方法由public void update(Observer... objs) {}改为public void update(Observer objs)即可。因为实际调入时传入的是单个对象 obj。