java method isBridge

来源:互联网 发布:公安部 网络安全监管 编辑:程序博客网 时间:2024/05/19 12:36

isBridge用来判断一个方法是否是桥接方法。

看代码:

package com.reflect;import java.lang.reflect.Method;import junit.framework.TestCase;public class TestBridgeMethod extends TestCase {public void testBridgeA() {class Father {public void test() {}}class Son extends Father {public void test() {}}Method[] methods = Son.class.getDeclaredMethods();for (Method method : methods) {System.out.println(method.toString() + ", " + method.isBridge());}}public void testBridgeB() {class Father<T> {public void test(T t) {}}class Son<T> extends Father<T> {public void test(T t) {}}Method[] methods = Son.class.getDeclaredMethods();for (Method method : methods) {System.out.println(method.toString() + ", " + method.isBridge());}}public void testBridgeC() {class Father<T> {public void test(T t) {}}class Son extends Father<String> {public void test(String s) {}}Method[] methods = Son.class.getDeclaredMethods();for (Method method : methods) {System.out.println(method.toString() + ", " + method.isBridge());}}}

运行testBridgeA,输出:

public void com.reflect.TestBridgeMethod$1Son.test(), false

运行testBridgeB,输出:

public void com.reflect.TestBridgeMethod$2Son.test(java.lang.Object), false

运行testBridgeC,输出:

public void com.reflect.TestBridgeMethod$3Son.test(java.lang.String), falsepublic void com.reflect.TestBridgeMethod$3Son.test(java.lang.Object), true

当父类是泛型,而子类不是泛型时,如果子类重写了父类的方法,那么子类实际上会有两个同名的方法,参数为Object的方法则是桥接方法。

0 0
原创粉丝点击