Re: [問題] 有關呼叫method

看板java作者 (Alien)時間14年前 (2012/02/15 12:15), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/6 (看更多)
※ 引述《enher (搗蛋三帥)》之銘言: : 有A 跟B兩個JAVA檔 : 如果我B要使用A其中一個method : 除了 : 1 把 A new起來以外 : 2 用static在該method上 : 有其他的方式嗎 : 因為現在的情況可能以上兩種方式都不能使用 : 1 的話我只是要傳一些資訊給A的method做處理 : new A起來必須重新傳A需要的參數 : 但在B 內拿不到某些參數 : 2 的話在A方法內因為有用到this.XXXX : 似乎就編譯不過了 : 所以想來問問是不是有其他方式 : 或是這兩種寫法還有能修正的地方 老實說我真的有點不知道怎麼回你好. 因為整篇問得都有點怪. 首先, 你把問題想成: 用另一個 "java 檔" 的 method 就已經是很大問題了. 在 Java 裡, "java 檔" 並不是 一個很有意義的分割. 比較合理的說法是, 有 A 和 B 兩個 *class*. 然後, 把 "new 起來" 和 "static" 想成是兩種方式 也是大錯特錯. 首先, 不是要 new 起來. instance method 的意思是要有一個物件, 而該 method 是操作 讓特定物件的. 要得到一個物件不一定你 new 出來 就行. 比如各類 factory 就是你自己去new 但還 是得到一個 object instance. 就算你可以 new, 但 new 出來的東西是不是已經在一個可以操作的狀 態? 最大問題是, instance method 和 class method (static) 並不是你隨便說用這個不然就換另一個試試的呀! 本身的概念就已經是完全不同的東西. instance method 是操作一個物件本身, class method 則是不是在操作 任何物件. 在 99.999%情況下, 根本不會可以隨隨便便 就把 instance method 改 class method (或相反). 在你問這個問題前, 你先要搞清楚的是, 你口中的 A 的設計是怎麼樣的, 設計這個 class 的人打算是讓你 怎麼使用, 然後再去考慮你在 B 該怎麼利用 A. 況且, 你既然都能 "用 static 在該 method 上"了, 那麼就代表你有 A 的 source code. 如果 A 不合用 把它改為你合用就好啦. 可是要怎麼改已經是涉及你程式 的設計的問題, 而非 Java 語言上的問題, 大家根本 愛莫能助, 能給你的意見也只是非常片面甚至你不該 接收的意見 (比如某推文提到隨便 new 起來用那種) alien -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.238.156.185 ※ 編輯: adrianshum 來自: 61.238.156.185 (02/15 12:16)
文章代碼(AID): #1FEp5XYn (java)
討論串 (同標題文章)
文章代碼(AID): #1FEp5XYn (java)