5

メソッドがシンセティックかブリッジかをチェックするアプリケーションを書いています。このアプリケーションをテストするために、スタブにさまざまなメソッドを追加しました。しかし、どのメソッドについても、このブロックはテスト ケースでカバーされていません。スタブには、 validate(Object o) などのメソッドが含まれており、他の通常の Java クラスとまったく同じです。

この行をカバーするには、スタブにどのようなメソッドを追加する必要がありますか?

コード:

     Method[] methods = inputClass.getMethods();
        for (Method method : methods) {

        if (method.isSynthetic() || method.isBridge()) {
            isInternal = true;
        }
       // More code.
     }
4

2 に答える 2

3

Java のブリッジ メソッドは合成メソッドであり、Java 言語機能の一部を実装するために必要です。最もよく知られているサンプルは、共変の戻り値の型と、基本メソッドの引数の消去が呼び出される実際のメソッドと異なるジェネリックのケースです。

import java.lang.reflect.*;

/**
 *
 * @author Administrator
 */
class SampleTwo {

    public static class A<T> {

        public T getT(T args) {
            return args;
        }
    }

    static class B extends A<String> {

        public String getT(String args) {
            return args;
        }
    }
}

public class BridgeTEst {

    public static void main(String[] args) {
        test(SampleTwo.B.class);
    }

    public static boolean test(Class c) {
        Method[] methods = c.getMethods();
        for (Method method : methods) {

            if (method.isSynthetic() || method.isBridge()) {
                System.out.println("Method Name = "+method.getName());
                System.out.println("Method isBridge = "+method.isBridge());
                System.out.println("Method isSynthetic = "+method.isSynthetic());
                return  true;
            }
        // More code.
        }
        return false;
    }
}


関連項目

于 2011-07-19T10:32:22.343 に答える