何时使用static类(工具类)

原创 2016年02月06日 05:51:04
一个static类,指全部成员都是static方法构成的,而没有任何成员变量, 也称为Utility class 或者Utility Pattern [参考: Utility Pattern].它可以在程序中直接使用该类的方法,而不用实例化.static class相对单例有更好的性能,原因是它的方法不需要实例方法的动态绑定 (static方法本身不能被复写)。 

static类可以看作某一组方法的集合,也能够更好的复用代码.static类各个方法应当是无状态的(stateless),即没有成员变量保存中间状态(结果),每个函数相互独立.所以很多人批评static类是面向过程开发思想的产物,应当极力避免使用。也有人使用某种方法将static看起来更加符合OOP [参考:OOP Alternative to Utility Classes],不过这种争论并没有太大的意义。

static类虽说不会生成实例,但它也会一定的开销,而且是会影响程序初始化过程的。另外也不能带静态成员变量,但如果有一些场景特别需要时,就要注意它对应用性能的影响。可以通过这篇文章了解一下:应用程序启动速度优化

反观单例模式,它既符合面向对象的思想,也可以做到延迟初始化.但相对的它有稍大的性能开销。如果是频繁使用的对象可能会有些影响。

用static和static方法封装类的例子

1.用static和static方法封装类的例子 定义负责用户输入的工具类InputUtil,在类中封装如下三个方法, (利用,static属性,static方法,方法重载) 提示:一个Scann...
  • miachen520
  • miachen520
  • 2016年06月01日 18:21
  • 688

静态的应用---工具类

每一个应用中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用。...
  • qq_25943493
  • qq_25943493
  • 2015年02月15日 23:14
  • 541

面向对象_工具类中使用静态

/* 我想定义一个数组 在同一个文件夹下,类定义在两个文件中和定义在一个文件中其实一样的。 */ class ArrayDemo{ public static void main(Str...
  • L1585931143
  • L1585931143
  • 2016年09月07日 22:56
  • 393

Android开发笔记之工具类使用静态方法与单例对象方法的优劣

最近在做项目开发的时候用到了很多工具类,之前对工具类的理解仅限于使用静态方法,没有细究.写了很多有损app运行性能的代码.例如在静态方法内创建了实例对象,这样让静态方法持有对象,使得对象一直存在与内存...
  • Droidrzy
  • Droidrzy
  • 2017年03月09日 15:11
  • 757

Java静态工具类线程安全的一些建议

静态方法和实例方法的区别是静态方法只能引用静态变量,静态方法通过类名来调用,实例方法通过对象实例来调用每个线程都有自己的线程栈,栈与线程同时创建,每一个虚拟机线程都有自己的程序计数器PC,在任何时刻,...
  • thekenofDIS
  • thekenofDIS
  • 2017年07月06日 11:21
  • 775

java工具类1---一般是通过静态函数实现某个功能,而不需要涉及类的任何属性和变量,直接类名调用

为什么要将方法和变量都写成静态的。因为,这些方法我只是想调用一下,不需要牵扯工具类中的任何属性和变量,所以,我就没有必要实例化了(new)。既然不需要实例化了,那么就用静态就行了。 public cl...
  • lx627776548
  • lx627776548
  • 2016年08月10日 15:03
  • 1050

静态工具类中使用注解注入service

一般需要在一个工具类中使用@Autowired 注解注入一个service。但是由于工具类方法一般都写成static,所以直接注入就存在问题。 使用如下方式可以解决: /** * */ pa...
  • p793049488
  • p793049488
  • 2014年07月15日 16:43
  • 25853

spring静态注入组件——工具类常用

如果直接用spring注入静态属性,则
  • qq525099302
  • qq525099302
  • 2014年07月22日 09:32
  • 150429

静态工具类中使用注解注入service

一般需要在一个工具类中使用@Autowired 注解注入一个service。但是由于工具类方法一般都写成static,所以直接注入就存在问题。 使用如下方式可以解决: /** * */ pa...
  • p793049488
  • p793049488
  • 2014年07月15日 16:43
  • 25853

浅谈Java中工具类的调用方法及说明书生成方案

1:工具类的定义:就是把一些需要用的工具方法定义到一起,以方便长期使用; 2:下面我们以ArrayTool的对象使用这些工具方法,对数组进行操作; 发现问题: 1)对象时用来封装数据的,可是Ar...
  • u010785186
  • u010785186
  • 2014年06月23日 22:50
  • 3419
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:何时使用static类(工具类)
举报原因:
原因补充:

(最多只允许输入30个字)