java中怎么正确使用静态方法

  介绍

这篇文章主要为大家展示了“java中怎么正确使用静态方法”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中怎么正确使用静态方法”这篇文章吧。

要知道何时以及如何正确使用静态方法,首先要搞清楚静态方法与实例方法的区别。静态(静态)本身说明该行为是无状态的,无需实例化,调用时无需再格外分配内存来存放实例。所以,针对全局的单例场景,无状态的行为时,就可以考虑用使用静态方法。但是,静态方法有一个致命的问题,即它与具体类型是强耦合的。如果该行为可能存在变化,就要避免使用静态方法。

因此,有如下情形:

<李>

对于确定不会变化的工具行为,使用静态方法;

<李>

需要提供语法糖让代码更易于阅读,可以定义静态方法,因为它可以被静态导入。

例如,谷歌的常见库里面有一些工具类文件<代码> ,<代码>先决条件> 先决条件> <节>

 <代码>公共静态& lt; T>T checkNotNull (T参考,@Nullable对象errorMessage){ <代码>,,如果(参考==null){ <代码>,,,,把新的NullPointerException (String.valueOf (errorMessage));  <代码>,代码,其他}{ <代码>,,,代码,返回引用; <代码>,,} <代码>} <代码> 
<代码>先决条件。checkNotNull(名字,“叫null");
  

对于第二种情形,例如单元测试时需要使用断言,为了提高测试代码的表现力,应力求测试更符合自然语言的阅读习惯。基于Java编写的AssertJ验证框架以拥有流畅的接口而著称。譬如说它提供的为了()方法,为了更好地体现DSL的特征,就被定义为静态方法,并通过静态导入隐藏类型信息,让方法调用变得更自然:

<节> <>之前为了(奖学金).extracting (“name"),,,,,,,,,,,,,,,,,,,,,, .contains (“Boromir",,“Gandalf",,“Frodo",,“Legolas")   

如果不满足这两个条件,就尽量不要用静态方法,因为静态方法不利于扩展,不利于模拟,因而也不利于编写测试。至于针对一些无状态的服务方法,例如电商系统中针对促销策略的变化封装OnSalePolicy类,由于促销策略随时发生变化,因此也不能使用静态方法。最佳选择是定义为服务接口,然后通过依赖注入(依赖注入)实现松耦合,拥抱变化。

java中怎么正确使用静态方法