StackOverflow涓婄殑闂锛屼絾鍥犱负鍐欏お闀夸簡锛屾墍浠ュ氨鍙戝" />
欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java寮傚父鏈夊鎱紵,Java慢?

来源: javaer 分享于  点击 35570 次 点评:103

Java寮傚父鏈夊鎱紵,Java慢?


鏈枃鏄洖绛?a href="http://stackoverflow.com/q/299068/315943" class="external" rel="nofollow" target="_blank">StackOverflow涓婄殑闂锛屼絾鍥犱负鍐欏お闀夸簡锛屾墍浠ュ氨鍙戝埌杩欓噷浜嗐€?/p>

瀹為檯涓婏紝鐪熸瑕佽璁虹殑闂骞朵笉鏄紝鈥滅浉瀵光€橀偅浜涗笉浼氬彂鐢熼敊璇殑浠g爜鈥欐潵璇达紝鈥橀偅浜涗互寮傚父褰㈠紡涓婃姤鐨勯敊璇€欎細鏈夊鎱紵鈥濓紝鍥犱负浣犲彲鑳戒篃璁ゅ悓鈥滃凡鎺ュ彈鐨勫洖绛斺€?/a>銆傜浉鍙嶏紝鐪熸鐨勯棶棰樻槸锛屸€滅浉瀵光€橀偅浜涗互鍏朵粬褰㈠紡涓婃姤鐨勯敊璇€欐潵璇达紝鈥橀偅浜涗互寮傚父褰㈠紡涓婃姤鐨勯敊璇€欎細鏈夊鎱紵鈥?span id="more-1480">

閫氬父璁や负锛屸€滀笉瑕佹姏鍑轰綘鎯宠鎹曡幏鐨勫紓甯糕€濄€傛墍浠ワ紝鎶涘嚭涓€涓叾浠栦汉鈥斺€斿骞冲彴鎴栨鏋禔PI鈥斺€旇鎹曡幏鐨勫紓甯告槸鍚堥€傜殑銆傛垨鑰呭湪缂栧啓涓€浜涘伐鍏稟PI鏃讹紝鎶涘嚭寮傚父涔熷彲浠ョ殑锛屽鏃ュ織璁板綍鎴栨秷鎭彂閫侊紝杩欎簺鎿嶄綔闇€瑕佸鐞嗗閮ㄨ櫄鎷熸満鐨勯敊璇紝渚嬪鏂囦欢IO鎴栫綉缁淚O閿欒銆?/p>

杩欐槸閫傚悎鎶涘嚭寮傚父鐨勪緥瀛愶紝搴旇娌℃湁浜轰細鍦ㄨ繖浜涗緥瀛愪笂鏈変簤璁€傜幇鍦紝鐪嬩竴涓嬬畝鍗曟柟娉曚腑鍑虹幇閿欒鏃朵細鍙戠敓浠€涔堛€傚亣璁炬柟娉曠鍚嶅涓嬶細

    /**
     * Transforms SomeClass into SomeOtherClass.
     * @param input some class instance
     * @return the transformed instance,
     *         or null if the transformation was unsuccessful
     */
    public SomeOtherClass transform(SomeClass input)

璋冪敤璇ユ柟娉曠殑浠g爜濡備笅鎵€绀猴細

    SomeClass input = ... // get the input from somewhere
    SomeOtherClass result = transform(input);
    if(result == null) {
       // handle the failure
    } else {
       // use the result
    }

浣嗙幇鍦紝褰撴柟娉曡繑鍥瀗ull鏃讹紝鎴戜滑鎯崇煡閬撳摢閲屽嚭鐜伴敊璇簡銆傜畝鍗曟潵璇村彲浠ヨ繖鏍凤細

    /**
     * Transforms SomeClass into SomeOtherClass.
     * @param input some class instance
     * @return the transformed instance, never null
     * @throws TransformationException on failure
     */
    public SomeOtherClass transform(SomeClass input) throws TransformationException

涓轰簡瀹炵幇杩欎釜鍔熻兘锛屼綘闇€瑕佸皢鈥渞eturn null鈥濇敼涓衡€渞eturn new TransformationException(鈥渞eason鈥?;鈥濄€傝皟鐢ㄦ柟娉曢渶瑕佸仛鏀瑰姩涔堬紵

    SomeClass input = ... // get the input from somewhere
    try {
       SomeOtherClass result = transform(input);
       // use the result
    } catch(TransformationException e) {
       // handle the failure
    }

娌℃湁浜轰細鍘昏涓婇潰鐨勪唬鐮佸潡锛屾病浠€涔堟剰涔夈€傛墍浠ヤ篃娌′粈涔堝彲鎯婅鐨勩€備綘鍙兘姣忓ぉ閮藉湪鍐欑被浼肩殑浠g爜锛屼絾涔熻涓嶄笂鏄€滀唬鐮佸紓鍛斥€濄€傚彲鏄紝灏嗘潵浣犱細鏄庣櫧鍦ㄢ€滃凡棰勬枡鍒扳€濈殑閿欒涓婁娇鐢ㄥ紓甯告槸澶氫箞澶х殑閿欒鍋囪鏈変竴澶╀綘寮€濮嬭鍒板湪鈥滃凡棰勬枡鍒扳€濈殑閿欒涓婁娇鐢ㄥ紓甯告槸闈炲父涓嶅ソ鐨勩€傜幇鍦紝鎹曡幏鈥滄湭棰勬枡鍒扳€濆紓甯告槸闈炲父鍙瑧鐨勶紝鍥犱负缂栧啓catch浠g爜鍧楋紝骞舵樉寮忕殑澶勭悊寮傚父鏈韩灏辨槸棰勬枡鍒颁細鏈夊紓甯搞€備絾娌″叧绯伙紝鎴戜滑杩樺彲浠ヤ慨鏀逛唬鐮佹敼鍙樿繖绉嶇獦澧冦€備簬鏄紝鎴戜滑閫€鍥炲埌浜咰璇█鏃朵唬锛岃繑鍥炰竴涓紓甯稿€兼潵琛ㄧず閿欒銆?/p>

    /**
     * Transforms SomeClass into SomeOtherClass.
     * @param input some class instance
     * @return the SomeOtherClass instance or, 
     *    if the transform fails, a TransformFailure instance 
     */
    public Object transform(SomeClass input)

浜庢槸锛岃皟鐢ㄩ儴鍒嗙殑浠g爜涔熶笉寰椾笉濂囪懇涓€浜涳細

    SomeClass input = ... // get the input from somewhere
    Object result = transform(input);
    if(result instanceof SomeOtherClass) {
       SomeOtherClass success = (SomeOtherClass)result;
       // use the result
    } else {
       TransformFailure failure = (TransformFailure)result;
       // handle the failure
    }

鎵€浠ワ紝濡傛灉浣犺鐫€浣跨敤寮傚父鏈変唬鐮佸紓鍛筹紝浣嗗彲浠ユ帴鍙楁墦鐮寸被鍨嬪畨鍏紝閭d箞浣犳渶缁堣闈㈠鐨勬槸闅句互缁存姢锛屾病娉曚娇鐢紝浠呬粎姣斿熀浜庡紓甯哥殑瑙e喅鏂规蹇袱鍊嶇殑浠g爜銆備絾鏄綘鍙堜笉鑳芥帴鍙楃被鍨嬪畨鍏ㄨ鐮村潖锛屽洜涓鸿繖2鍊嶇殑鎬ц兘鎻愬崌杩樻湭琚瘉鏄庯紝鐜板湪灏辩敤瀹炲湪澶瞾鑾姐€傛墍浠ワ紝浣犲喅瀹氫娇鐢ㄧ粨鏋滃璞★紝鑰屼笉鏄繑鍥炲紓甯稿€笺€?/p>

   /**
     * Transforms SomeClass into SomeOtherClass.
     * @param input some class instance
     * @return the TransformResult instance
     */
    public TransformResult transform(SomeClass input)

鐜板湪锛岀浉搴斿湴锛岃皟鐢ㄩ儴鍒嗙殑浠g爜鍙樻垚浜嗚繖鏍凤細

    SomeClass input = ... // get the input from somewhere
    TransformResult result = transform(input);
    if(result.isSuccess()) {
       SomeOtherClass success = result.getSuccess();
       // use the result
    } else {
       TransformFailure failure = result.getFailure();
       // handle the failure
    }

鐜板湪锛屾垜浠湁浜嗕竴涓殣鏅︼紝浣嗗彲绠$悊鐨勮В鍐虫柟妗堛€傚彲鏄紝瀹冩瘮浣跨敤寮傚父鐨勭涓€涓柟妗堟參2鍊嶏紝鍗充娇浣犲皢TransformResult鍜孴ransformFailure鍚堝苟涔熸槸涓€鏍风殑銆傚啀璇存槑涓€閬嶏紝浣跨敤缁撴灉瀵硅薄姣斾娇鐢ㄥ紓甯告參锛屽嵆浣垮湪璋冪敤杩囩▼涓彂鐢熶簡閿欒銆傛瘡娆′綘閮介渶瑕佸垱寤轰竴涓柊鐨勭粨鏋滃璞★紝杩欐病浠€涔堝疄闄呮剰涔夛紝鑰屽紓甯稿璞″彧鍦ㄥ彂鐢熼敊璇殑鏃跺€欐墠浼氬垱寤恒€?/p>

瀵逛簬寮傚父锛岃繕鏈変竴涓璁ㄨ鐨勫湴鏂广€傚亣璁炬湁浜哄湪浣跨敤鏂规硶transform鏃讹紝娌℃湁璁ょ湡鐪媕avadoc銆傚湪浣跨敤寮傚父鐨勪緥瀛愪腑锛屼細鏈変笅闈㈢殑浠g爜锛?/p>

    SomeClass input = ... // get the input from somewhere
    SomeOtherClass result = transform(input);
    // use the result

鍦ㄤ娇鐢ㄥ紓甯哥殑渚嬪瓙涓紝浠栦滑鐭ラ亾杩斿洖鍊肩殑绫诲瀷锛屼互鍙婃槸鍚︿竴涓€滃凡妫€鏌ュ紓甯糕€濓紝浠栦滑鍙兘浼氬緱鍒颁竴涓紪璇戞椂閿欒锛屾垨鑰呬粬浠細鍦╰hrows璇彞涓0鏄庣浉搴旂殑寮傚父銆傚嵆浣挎槸鈥滄湭妫€鏌ュ紓甯糕€濓紝閿欒浼氫紶閫掑埌涓婂眰璋冪敤銆傜幇鍦紝鑰冭檻浣跨敤寮傚父杩斿洖鍊肩殑渚嬪瓙锛?/p>

    SomeClass input = ... // get the input from somewhere
    SomeOtherClass result = (SomeOtherClass)transform(input);
    // use the result

杩欎釜绮楀績鐨勭敤鎴峰啓鐨勪唬鐮佺湅璧锋潵鎸烘紓浜紝浣嗗綋杩愯杩囩▼涓彂鐢熼敊璇椂锛屽氨婊′笉鏄偅涔堝洖浜嬩簡銆傞偅鏃讹紝浣犺垂灏藉姏姘旀彁渚涚殑閿欒淇℃伅浼氬洜涓哄彂鐢熶簡ClassCastException寮傚父涓哄叏閮ㄤ涪澶便€備娇鐢ㄧ粨鏋滃璞′篃涓嶄細濂藉埌鍝幓銆?/p>

    SomeClass input = ... // get the input from somewhere
    SomeOtherClass result = transform(input).getSuccess();
    // use the result

鍐嶈涓€閬嶏紝涓婇潰鐨勪唬鐮佺湅鏉ョ浉褰撴甯搞€傚鏋滀粬浠洸鐩娇鐢ㄦ湰鏂囦腑缁欏嚭鐨勭涓€涓柟娉曪紝閭d箞鍦ㄧ▼搴忚繍琛岃繃绋嬩腑锛岃偗瀹氫細鍑虹幇NullPointerException寮傚父銆?/p>

杩欓噷涓昏鎯宠鐨勬槸锛屽鐞嗛€昏緫閿欒鏃讹紝浣跨敤寮傚父鐨勪緥瀛愬彲浠ユ寜棰勬兂鐨勬柟寮忔甯稿伐浣滐紝鎶ュ憡閿欒淇℃伅銆備絾鏄叾浠栫殑瑙e喅鏂规鍗翠細浜х敓涓€浜涙病鐢ㄧ殑寮傚父锛屽嵆浣夸綘宸茬粡姝g‘灏嗚蒋浠堕噸鏂伴儴缃蹭簡涓€閬嶏紝瀹冧粛鐒朵細鍑洪敊锛屽彧鏈夎繖鏃讹紝浣犳墠鑳藉緱鍒伴敊璇俊鎭€?/p>

鎵€浠ワ紝鍞竴绗﹀悎閫昏緫鎬х殑缁撹鏄紝濡傛灉浣犳兂涓婃姤閿欒淇℃伅锛岄偅涔堝氨搴旇浣跨敤寮傚父銆傚畠姣旂粨鏋滃璞℃€ц兘楂橈紝姣斿紓甯歌繑鍥炲€煎畨鍏紝鑰屼笖杩愯绋冲畾銆?/p>

 

鏇存柊浜?012-12-19 19锛?3

鎰熻阿pony鎸囧嚭鐨勮瘧鏂囦腑鐨勯敊璇€?/p>

 

鑻辨枃鍘熸枃锛?a href="http://blog.fuwjax.org/2011/04/how-slow-are-java-exceptions/" target="_blank" class="external" rel="nofollow">How聽slow are Java Exception锛岀炕璇戯細Wld5聽-聽鏇规棴涓?/a>

璇戞枃閾炬帴锛?a href="http://www.wld5.com/1480.html">http://www.wld5.com/1480.html

銆愬闇€杞浇锛岃鍦ㄦ鏂囦腑鏍囨敞骞朵繚鐣欏師鏂囬摼鎺ャ€佽瘧鏂囬摼鎺ュ拰璇戣€呯瓑淇℃伅锛岃阿璋㈠悎浣滐紒銆?/span>

相关文章

    暂无相关文章
相关栏目:

用户点评