这是一个创建于 2328 天前的主题,其中的信息可能已经有所发展或是发生改变。
一个工具类中的方法一般都是静态方法,这样利用了静态方法的特性,使得可以不实例化这个工具类而直接调用工具类的里面的方法。但我觉得静态方法的本意不应该是这个目的。
说一下我会有这种想法的起因:
我现在有这样一个工具类,其中的方法是为了将一行文本( String 类型)按照分隔符分割后,依序构成一个 JavaBean 后返回。
比如文本是:
『 Tea_LongJin_20180608_100.00 』
那么就会转为一个 Tea 类,teaname="LongJin" productime="20180608" price = 100.00 并返回
如果文本开头是 coffee,那么又要调用 ReadCoffee 方法。(调用谁的条件判断不是工具类和工具方法负责的,工具方法只是被调用。)
那么将这一行文本分割转为字符串数组的过程中用到了『 public String[] split(String regex,int limit) 』方法,其中第二个参数是这行文本中分隔符的个数。
那我就想,不论是读对应哪个类的文本,数分隔符的方法都是一样的步骤。那应该将它提出来。
而这个抽象出来的方法为了能在静态的工具方法中被使用,就必须要是静态的。然而因为这个方法不应该被外部调用,所以又要私有化。这样一个 private static 的方法就让我觉得很怪异很不应该。。。
我整个想法是否有哪里出错了呢?望指正。谢谢。
4 条回复 • 2018-06-08 22:58:21 +08:00
|
|
1
3pmtea 2018-06-08 22:13:59 +08:00
private static 方法好像没啥毛病,jdk 也这么用
非要用 non-static 方法来做的话,你也可以弄一个 inner private static class 去做你的字符串解析工作,然后在工具类里给一个 private static final field,这样也顺便实现了“一个类只做一件事”
|
|
|
2
feiyuanqiu 2018-06-08 22:22:28 +08:00 via Android
静态方法就是函数
你这个例子实际上就是序列化与反序列化,照着 Serializable 接口按自己的序列化规则实现就行
|
|
|
3
JackEggie 2018-06-08 22:54:38 +08:00 via Android
抽象出来的通用工具方法应该放到 util 包里给项目中的所有类使用吧。。。
|
|
|
4
JackEggie 2018-06-08 22:58:21 +08:00 via Android
静态的成员,包括方法,应该是类的属性吧。如果是工具类的属性,那就理所当然是工具类提供的静态工具方法咯。这样也方便了其它类的静态方法调用啦。
|