Re: [問題] 有關呼叫method
※ 引述《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)
討論串 (同標題文章)