当我开发一个满足我需求的类架构时,我遇到了这种情况。我有一个抽象类,其中包含一些必须由子类实现的方法,但在子类中,我发现我需要实现从第一个继承的签名。
告诉你我的意思:
// 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
{
}
有什么办法吗?我不知道是否可以使用泛型。非常感谢。
答案 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
}
}
这可以实现您的需求,但我们需要更多有关您的用例的详细信息,以确定这是否是正确的设计。