可以说我有这三个班

class Human
  public void eat()

class Lawyer extends Human
  public void beEvil()

class Murderer extends Human
  public void beEvil()
  public void kill()


现在我有一个动作处理程序,并且我想在不知道自己是什么的情况下处理动作。因此,例如:

handleBeEvil(Human human)
{
    ..
    human.beEvil(); //wont obviously work
    ..
}


例如,在as3中,我会使用

handleBeEvil(Object human)
{
   human.beEvil(); //would pass compiler, work or break runtime
}


用Java实现此目标的最佳方法是什么?我想避免将所有的琐事都归入人类课堂。

最佳答案

创建一个接口并同时使用LawyerMurderer来实现它(即class Lawyer extends Human implements Evil):

interface Evil {
    void beEvil();
}


然后你的方法是

... handleBeEvil(Evil human)
{
    ..
    human.beEvil();  // now this will work
    ..
}

关于java - Java中的Object.callGenericMethod(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13772473/

10-12 04:08