{"id":515,"date":"2021-06-08T04:44:32","date_gmt":"2021-06-08T04:44:32","guid":{"rendered":"http:\/\/emacslisp.com\/?p=515"},"modified":"2021-06-08T04:44:32","modified_gmt":"2021-06-08T04:44:32","slug":"java-method-bridge","status":"publish","type":"post","link":"http:\/\/emacslisp.com\/?p=515","title":{"rendered":"java &#8211; method bridge"},"content":{"rendered":"<p>java reflection could get all methods of a class.<\/p>\n<p>isBridge() could check whether method is bridged or not.<\/p>\n<p>when we override parent class general type method in child class, method will become bridged.<\/p>\n<p>here is example:<\/p>\n<pre lang=\"java\" line=\"1\">\r\npackage org.spring.main;\r\n\r\nimport java.lang.reflect.Method;\r\n\r\nimport org.springframework.core.BridgeMethodResolver;\r\n\r\npublic class BridgeMethodResolverEntry {\r\n\r\n\tpublic class Node<T> {\r\n\r\n\t    public T data;\r\n\r\n\t    public Node(T data) { this.data = data; }\r\n\r\n\t    public void setData(T data) {\r\n\t        System.out.println(\"Node.setData\");\r\n\t        this.data = data;\r\n\t    }\r\n\t}\r\n\r\n\tpublic class MyNode extends Node<Integer> {\r\n\r\n\t    public MyNode(Integer data) { super(data); }\r\n\r\n\t    @Override\r\n\t    public void setData(Integer data) {\r\n\t        System.out.println(\"MyNode.setData\");\r\n\t        super.setData(data);\r\n\t    }\r\n\t}\r\n\t\r\n\tpublic static void main(String[] args) {\r\n\t\t\/\/ TODO Auto-generated method stub\r\n\t\tBridgeMethodResolverEntry x = new BridgeMethodResolverEntry();\r\n\t\tMyNode resolver = x.new MyNode(5);\r\n\t\tMethod[] declaredMethods = resolver.getClass().getDeclaredMethods();\r\n\t\t\r\n\t\tfor (int i = 0; i < declaredMethods.length; i++) {\r\n\t\t            Method declaredMethod = declaredMethods[i];\r\n\t\t            String methodName = declaredMethod.getName();\r\n\t\t            Class<?> returnType = declaredMethod.getReturnType();\r\n\t\t            Class<?> declaringClass = declaredMethod.getDeclaringClass();\r\n\t\t            boolean bridge = declaredMethod.isBridge();\r\n\t\t            System.out.print((i+1) + \" method name is\" + methodName + \", return type is \" + returnType + \"  \");\r\n\t\t            System.out.print(bridge ? \" is Bridge Method\" : \" is not Bridge Method\");\r\n\t\t            System.out.println(\"  it is declared at \"+declaringClass.getSimpleName()+\"\");            \r\n\t\t}                        \r\n\r\n\t}\r\n\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>java reflection could get all methods of a class. isBridge() could check whether method is bridged or not. when we override parent class general type method in child class, method will become bridged. here is example: package org.spring.main; import java.lang.reflect.Method; import org.springframework.core.BridgeMethodResolver; public class BridgeMethodResolverEntry { public class Node { public T data; public Node(T [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-515","post","type-post","status-publish","format-standard","hentry","category-java"],"_links":{"self":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts\/515","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=515"}],"version-history":[{"count":1,"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts\/515\/revisions"}],"predecessor-version":[{"id":516,"href":"http:\/\/emacslisp.com\/index.php?rest_route=\/wp\/v2\/posts\/515\/revisions\/516"}],"wp:attachment":[{"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=515"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=515"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/emacslisp.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}