利用java反射調用類及父類的的私人方法

來源:互聯網
上載者:User
      今天和一位朋友談到父類私人方法的調用問題,本來以為利用反射很輕鬆就可以實現,因為在反射看來根本不區分是否是private的,沒有想到調用本身的私人方法是可以的,但是調用父類的私人方法則不行,後來糾其原因很有可能是因為getDeclaredMethod方法和getMethod方法並不會尋找父類的私人方法,於是只好自己寫遞迴了,經過嘗試果然如此。把代碼放出來方便更多人。這段代碼可以解決很多實際問題,不過利用反射來做的話效能不會太好。 [java]  view plain copy package com.syj.util.reflect;      import java.lang.reflect.Method;      /**   * <p>   * Title: 私人方法調用工具類   * </p>   *    * <p>   * Description:利用java反射調用類的的私人方法   * </p>   *    * <p>   * Copyright: Copyright (c) 2007   * </p>   *    * @author 孫鈺佳   * @main sunyujia@yahoo.cn   * @date Jun 1, 2008 10:18:58 PM   */   public class PrivateUtil {       /**       * 利用遞迴找一個類的指定方法,如果找不到,去父親裡面找直到最上層Object對象為止。       *        * @param clazz       *            目標類       * @param methodName       *            方法名       * @param classes       *            方法參數類型數組       * @return 方法對象       * @throws Exception       */       public static Method getMethod(Class clazz, String methodName,               final Class[] classes) throws Exception {           Method method = null;           try {               method = clazz.getDeclaredMethod(methodName, classes);           } catch (NoSuchMethodException e) {               try {                   method = clazz.getMethod(methodName, classes);               } catch (NoSuchMethodException ex) {                   if (clazz.getSuperclass() == null) {                       return method;                   } else {                       method = getMethod(clazz.getSuperclass(), methodName,                               classes);                   }               }           }           return method;       }          /**       *        * @param obj       *            調整方法的對象       * @param methodName       *            方法名       * @param classes 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.