国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

java 8里 Method方法bug

terro / 936人閱讀

摘要:在寫框架的時候出現(xiàn)了頭疼問題找不到方法這樣寫能找到方法,沒有問題但是換成下面的方式就出問題了。建議建議使用然后我們自己遍歷,不推薦使用

在寫rpc框架的時候出現(xiàn)了頭疼問題:

 public Object invoke(Object bean)throws Exception {
            Method[] methods = clazz.getMethods();
            for (Method method:methods) {
                if(method.getName().equals(method.getName())){
                    return method.invoke(bean, param);
                }
            }
            throw new Exception("找不到方法");
        }

這樣寫能找到方法,沒有問題?。〉菗Q成下面的方式就出問題了。

 public Object invoke(Object bean)throws Exception {
      return clazz.getMethod(method, param.getClass()).invoke(bean, param);
 }

跑出異常為:
java.lang.NoSuchMethodException:com.robin.interf.UserService.getUser(java.lang.Integer)

java使用的版本是:jdk1.8.0_101

Class.java代碼跟蹤:

是一個searchMethods的方法在查找,繼續(xù)走

代碼走到這里,res=null,導致NoSuchMethodException異常,算是java8 bug吧!

原因:searchMethods方法里,m.getName() == internedName這句導致的,正確的是m.getName().intern() == internedName,因為m.getName()是堆里取出值,而internedName是常量池里的,而m.getName().intern()會將常量池里存在的字符串直接取到,不存在的會放入到常量池里。

建議:建議使用class.getMethods(),然后我們自己遍歷,不推薦使用class.getMethod(methodName, paras)

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66123.html

相關文章

  • 記JVM堆外內(nèi)存泄漏Bug查找

    摘要:服務本身是一個,開起的線程數(shù)為,再加上一些其他線程,總的線程數(shù)不會超過服務內(nèi)自己沒有顯示創(chuàng)建線程或者使用線程池。問題解決找到所在后,結局方案很簡單,只需將的通過單例的方式注入到服務中,即可解決堆外內(nèi)存泄漏的問題。 內(nèi)存泄漏Bug現(xiàn)場 一個做BI數(shù)據(jù)展示的服務在一個晚上重啟了5次,由于是通過k8s容器編排,服務掛了以后會自動重啟,所以服務還能繼續(xù)提供服務。 第一時間先上日志系統(tǒng)查看錯誤日...

    hiYoHoo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<