静态方法的缺陷
来源:互联网 发布:粒子群算法参数 编辑:程序博客网 时间:2024/05/01 15:36
静态方法的缺陷
静态方法的一个常见缺陷是从静态方法中引用每个对象的数据。这将出现问题,因为静态方法没有指向单个对象数据的隐式“this”指针。而且,如果试图从一个静态方法中访问一个实例变量,编译程序不会知道到底需要哪一个对象并将会产生错误信息。典型的错误信息是“Can't make static referenc to non-static variable.”。
public static voild main(String[] args) {
salary = 50000; //BZZT! does not work
Employee e = new Employee("Fred",50000);
e.salary = 50000; //WORKS fine.
如果需要在静态方法中引用实例(每个对象的)数据和方法,一种做法是在静态方法中声明和实例化一个对象,然后就可以访问这个实例的数据和方法了。
前面已经说过,并不是真正地保持实例方法的每个实例副本。那么,静态方法的用途是什么呢?当方法所做的处理只与整个类有关,而且并不特别针对一个实例时,则应把这个方法声明为静态的。java.lang.String类有若干个valueOf()方法,他们均接受一个基本类型(布尔和整数等)参数,然后把参数值作为String返回。这些方法都是静态的,因此无需要使用字符串实例就可以调用它们,示例如下:
String s = String.valueOf(123.45); //OK
javalang.Math 包中的方法都是静态方法,如abc()、sin()、cos()和exp()等。只需如下所示的那样调用它们即可:
double d = Math.abs(-12.0);
最后,程序的开始执行位置main()方法也是静态的。如果不是,则在调用它之前,需要先创建实例,如同在applet和Servlet中所做的那样。
- 静态方法的缺陷
- 缺陷:域与静态方法
- 多态的缺陷:域和静态方法
- Thinking in Java 多态的缺陷:域与静态方法
- 理解GetHashCode()方法的缺陷
- 软件缺陷(BUG)的缺陷等级定义方法
- 条款10:理解GetHashCode()方法的缺陷
- 本地化测试寻找软件缺陷的方法
- 开始学习微软的缺陷管理方法
- 多态的缺陷 “覆盖”私有方法
- 多态的缺陷:“覆盖私有方法”
- 一种克服gets函数缺陷的方法
- 软件缺陷分析的几种方法
- 嵌入式软件技术的缺陷查找方法
- 避免、修正程序缺陷的一些方法
- 功能缺陷的测试方法流程
- 表面缺陷检测的几种方法
- WebClient类的DownloadString方法的缺陷,使用downloaddata更好
- Java中的“数据集”
- 成为有钱人的25种方法
- 写给刚接触Web Service的朋友
- 磁盘分区格式的一些技巧
- 一些Dos小工具
- 静态方法的缺陷
- 有些事情真的说不好
- VB.NET C#互转工具
- NHibernate 0.8 Beta发布了
- AUI与BNC
- 中国软件业只能招超人(转贴自 中华英才网论坛 )
- 今天是母亲节
- 避免重启你的应用程序 二
- 利用Eclipse开发Hibernate应用程序