作者adrianshum (Alien)
看板java
标题Re: [问题] 有关呼叫method
时间Wed Feb 15 12:15:26 2012
※ 引述《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)