- package com.poson.sweetop.generics;
- import java.lang.reflect.Method;
- class Mime {
- public void sit() {
- System.out.println("Mime sit");
- }
- public void speak() {
- System.out.println("Mime speak");
- }
- public String toString(){
- return "Mime";
- }
- }
- class Robot {
- public void speak() {
- System.out.println("Robot speak");
- }
- public String toString(){
- return "Robot";
- }
- }
- class CommunicateReflectively {
- public static void perform(Object object) {
- Class<?> oc = object.getClass();
- try {
- try {
- Method speak = oc.getMethod("speak");
- speak.invoke(object);
- } catch (NoSuchMethodException e) {
- System.out.println(object + " can't speak");
- }
- try {
- Method sit = oc.getMethod("sit");
- sit.invoke(object);
- } catch (NoSuchMethodException e) {
- System.out.println(object + " can't sit");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- public class LatenReflection {
- public static void main(String[] args) {
- CommunicateReflectively.perform(new Robot());
- CommunicateReflectively.perform(new Mime());
- }
- }
如果他走起来像鸭子,叫起来也像鸭子,那么可以把他当鸭子。
不用被强制实现接口。