- packagecom.poson.sweetop.generics;
- importjava.lang.reflect.Method;
- classMime{
- publicvoidsit(){
- System.out.println("Mimesit");
- }
- publicvoidspeak(){
- System.out.println("Mimespeak");
- }
- publicStringtoString(){
- return"Mime";
- }
- }
- classRobot{
- publicvoidspeak(){
- System.out.println("Robotspeak");
- }
- publicStringtoString(){
- return"Robot";
- }
- }
- classCommunicateReflectively{
- publicstaticvoidperform(Objectobject){
- Class<?>oc=object.getClass();
- try{
- try{
- Methodspeak=oc.getMethod("speak");
- speak.invoke(object);
- }catch(NoSuchMethodExceptione){
- System.out.println(object+"can'tspeak");
- }
- try{
- Methodsit=oc.getMethod("sit");
- sit.invoke(object);
- }catch(NoSuchMethodExceptione){
- System.out.println(object+"can'tsit");
- }
- }catch(Exceptione){
- e.printStackTrace();
- }
- }
- }
- publicclassLatenReflection{
- publicstaticvoidmain(String[]args){
- CommunicateReflectively.perform(newRobot());
- CommunicateReflectively.perform(newMime());
- }
- }
如果他走起来像鸭子,叫起来也像鸭子,那么可以把他当鸭子。
不用被强制实现接口。