我想定义一个界面,比如
public interface Visitor <ArgType, ResultType, SelfDefinedException> {
public ResultType visitProgram(Program prog, ArgType arg) throws SelfDefinedException;
//...
}
在实现过程中,selfDefinedException会有所不同。 (selfDefinedException为现在的通用undefined) 有没有办法做到这一点?
由于
答案 0 :(得分:10)
您只需要将异常类型约束为适合抛出。例如:
interface Visitor<ArgType, ResultType, ExceptionType extends Throwable> {
ResultType visitProgram(String prog, ArgType arg) throws ExceptionType;
}
或者也许:
interface Visitor<ArgType, ResultType, ExceptionType extends Exception> {
ResultType visitProgram(String prog, ArgType arg) throws ExceptionType;
}
答案 1 :(得分:5)
您的通用参数需要扩展Throwable。像这样:
public class Weird<K, V, E extends Throwable> {
public void someMethod(K k, V v) throws E {
return;
}
}
答案 2 :(得分:1)
您可以执行类似
的操作public interface Test<T extends Throwable> {
void test() throws T;
}
然后,例如
public class TestClass implements Test<RuntimeException> {
@Override
public void test() throws RuntimeException {
}
}
当然,当你实例化类时,你必须声明抛出的异常。
编辑:当然,将Throwable
替换为任何可以扩展Throwable
,Exception
或类似内容的自定义异常。
答案 3 :(得分:-3)
如果我理解了这个问题,你可以抛出
Exception
因为它是父类。