4

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

向您展示我的意思:

// 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
{

}

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

4

1 回答 1

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
  }
}

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

于 2013-09-04T16:30:02.737 回答