我正在编写一个应用程序来检查该方法是synticntic还是bridge.
为了测试这个应用程序,我在我的存根中添加了各种方法.
但是对于这个方法都没有涉及测试用例.
Stub包含像validate(Object o)等方法,就像任何其他普通的
java类一样.
我应该在我的存根中添加什么样的方法,以便涵盖这一行?
代码:
Method[] methods = inputClass.getMethods();
for (Method method : methods) {
if (method.isSynthetic() || method.isBridge()) {
isInternal = true;
}
// More code.
}
最佳答案 Java中的Bridge方法是合成方法,它们是实现某些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;
}
}
也可以看看