10

次のようなインターフェイスを定義したい

public interface Visitor <ArgType, ResultType, SelfDefinedException> {
     public ResultType visitProgram(Program prog, ArgType arg) throws SelfDefinedException;
     //...
}

実装時に、selfDefinedException は異なります。(今のところ一般的な undefined としての selfDefinedException) これを行う方法はありますか?

ありがとう

4

4 に答える 4

15

スローされるのに適した例外タイプを制約するだけです。例えば:

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;
}
于 2012-03-19T23:02:14.870 に答える
6

ジェネリック化されたパラメーターは、Throwable を拡張する必要があります。このようなもの:

public class Weird<K, V, E extends Throwable> {

   public void someMethod(K k, V v) throws E {
      return;
   }
}
于 2012-03-19T23:01:50.100 に答える
1

次のようなことができます

public interface Test<T extends Throwable> {
    void test() throws T;
}

そして、例えば

public class TestClass implements Test<RuntimeException> {
    @Override
    public void test() throws RuntimeException {
    }
}

もちろん、クラスをインスタンス化するときは、スローされる例外を宣言する必要があります。

編集:もちろん、拡張Throwableする自己定義の例外などに置き換えます。ThrowableException

于 2012-03-19T23:02:34.603 に答える
-4

私が質問を理解したら、あなたは投げることができます

Exception

親クラスなので。

于 2012-03-19T23:00:27.447 に答える