使用静态类型是个好主意吗?

时间:2011-05-24 00:32:02

标签: java

我知道静态类型和其他类型之间的区别,但我不确定在哪里使用。现在我在所有地方都使用静态类型来避免对象实例化。以这种方式使用它是一个好主意吗?在所有地方使用静态类型是否有任何特殊的缺点?

修改

您将此称为static String staff

3 个答案:

答案 0 :(得分:5)

这是一个很好的问题。通常你应该使用static方法/变量,除非你确定它是一个正确的应用程序。在面向对象编程(OOP)中,对象封装数据和行为。通常,*实例方法用于操纵对象的数据。

Static方法/变量只应用于与任何特定对象无关的功能。 static的有效申请的一个很好的例子是Math.random()

关于实例和静态方法/变量的一些注释:

  • 实例变量可以访问静态实例变量/方法,但静态方法只能访问其他静态变量/方法。
  • 静态变量在类的所有实例中始终相同。

罗伯特·马丁撰写的一本关于这个主题的好书是Clean Code。强烈推荐。

*实例方法与静态方法相反。它们与类实例相关联,而不是类本身。


解决您的编辑问题,假设这是一个变量,您可以像这样访问它:

MyClass.staff = "bob, george, and linda";
System.out.println(MyClass.staff);

编辑:这是我之前在另一个论坛上发表的一篇文章,有一些很好的答案。这是一个PHP论坛,但这些概念仍然适用。

http://forums.devnetwork.net/viewtopic.php?f=1&t=127667

答案 1 :(得分:1)

当有多个对象实例时,所有实例都会共享静态类型的变量和函数。

答案 2 :(得分:0)

任何应用程序中的大多数逻辑都将模块化,并将在某些共享字段上运行。这就是大多数方法都是非静态的原因。在这种情况下,'fields'可以是'firstName'等基本的东西。但在其他情况下,'fields'是其他类的实例,例如DataAccess(DAO)类。

变量,即字段几乎不应该是静态的,除非它们是“常量”。

使用静态方法的一个好例子是转换字符串的类,例如:

public class StringUtil{

  public static String convertToHex(String orig){

  }
}