用不同的签名java实现

时间:2013-09-04 15:43:32

标签: java generics

当我开发一个满足我需求的类架构时,我遇到了这种情况。我有一个抽象类,其中包含一些必须由子类实现的方法,但在子类中,我发现我需要实现从第一个继承的签名。

告诉你我的意思:

// person class
public abstract class Person
{ 
  protected void abstract workWith(Object o) throws Exception;
}

//developer class
public class Developer extends Person
{// i want to implement this method with Computer parametre instead of Object and throws `//DeveloperException instead of Exception`
 protected void workWith(Computer o) throws DeveloperException
 {
  //some code here lol install linux ide server and stuff 
 }
}

// exception class 
public class DeveloperException extends Exception
{

}

有什么办法吗?我不知道是否可以使用泛型。非常感谢。

1 个答案:

答案 0 :(得分:5)

你绝对可以使用泛型:

public abstract class Person<T, U extends Exception> { 
  protected abstract void workWith(T t) throws U;
}

class Developer extends Person<Computer, DeveloperException> {
  protected void workWith(Computer c) throws DeveloperException {
    //implementation code
  }
}

这可以实现您的需求,但我们需要更多有关您的用例的详细信息,以确定这是否是正确的设计。