Re: [問題] 有關呼叫method

看板java作者 (痞子軍團團長)時間14年前 (2012/02/14 22:53), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/6 (看更多)
※ 引述《enher (搗蛋三帥)》之銘言: : 有A 跟B兩個JAVA檔 直接說兩個 class 可能還比較快 : 如果我B要使用A其中一個method 假設這個 method 叫做 foo() : 除了 : 1 把 A new起來以外 : 2 用static在該method上 : 有其他的方式嗎 : 因為現在的情況可能以上兩種方式都不能使用 : 1 的話我只是要傳一些資訊給A的method做處理 : new A起來必須重新傳A需要的參數 : 但在B 內拿不到某些參數 : 2 的話在A方法內因為有用到this.XXXX : 似乎就編譯不過了 : 所以想來問問是不是有其他方式 : 或是這兩種寫法還有能修正的地方 : 推 LPH66:你先搞清楚 A 那個 method 的使用情境再說 02/14 21:32 : → enher:抱歉 可以請你稍微說明一下使用情境是? 02/14 21:38 我想,反而是你需要把你的情境說明的清楚一點 而不是要 LPH66 說明清楚一點 因為我最近很無聊,所以就來代打回一下這篇 根據你說的,基本上我們可以得到下列的前提 1. 你改得動 A 這個 class (你可以對 A 的 foo 掛上 static) 2. A 這個 class 做了一定程度的封裝 根據前提 2,那麼你的問題 & 你要問 LPH66 的問題就有一點無釐頭 (畢竟只有你知道你要寫什麼功能 & A 長啥樣子) 或著,倒過來說可能比較能讓你懂: 為甚麼 A.foo() 需要用到 A 中 XXXX 這個 field 呢? 又為甚麼在 new A() 的時候需要傳遞參數 (直覺是 constructor 需要的參數會影響 XXXX 這個 field) 如果我們很善良的把撰寫 A 的人 假設成一個有基本 OO 觀念、負責的 programmer 他可能遵守類似像單一責任原則、開放封閉原則 那麼基本上 A 之所以為 A(謎之聲:啊不然咧?) 以及 A.foo() 之所以能運作,很可能就是因為必須滿足上述那兩個問題 不然,他幹麼千辛萬苦的還要 new 個 A 才能呼叫 foo 按照你的需求去設計 interface 不是很美妙嗎? 如果你不想鳥上頭這堆繞圈子的鳥話 那回到前提 1,我會建議你直接對照 A.foo() 重新刻一個你需要的 method 然後要嘛就是 A 的作者太混蛋 不然有很大的機率(大概跟樂透啥都沒中一樣大) 你會發現這一切是必要之惡 也就是所謂「A 那個 method 的使用情境」 ===== 好廢話的一篇 Orz -- 錢鍾書: 說出來的話 http://www.psmonkey.org 比不上不說出來的話 Java 版 cookcomic 版 只影射著說不出來的話 and more...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.29.97

02/14 23:12, , 1F
謝謝講解 之所以這樣問是因為 A是外包回來的程式
02/14 23:12, 1F

02/14 23:15, , 2F
而B是我現在要加的東西 但上面希望用A的方法做處理
02/14 23:15, 2F

02/15 00:01, , 3F
如果不能動A, 就隨便丟個參數去new A不就好了...
02/15 00:01, 3F
文章代碼(AID): #1FEdLjty (java)
討論串 (同標題文章)
文章代碼(AID): #1FEdLjty (java)