Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用静态类型是个好主意吗?_Java - Fatal编程技术网

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

Java 使用静态类型是个好主意吗?,java,Java,我知道静态类型和其他类型之间的区别,但我不确定在哪里使用哪个类型。现在我在所有地方都使用静态类型来避免对象实例化。这样用是个好主意吗?在所有地方使用静态类型有什么特别的缺点吗 编辑 你把它称为什么?这是一个很好的问题。通常,您应该不使用静态方法/变量,除非您确定它是正确的应用程序。在面向对象编程(OOP)中,对象封装数据和行为。通常,*实例方法用于操作对象的数据 静态方法/变量应仅用于与任何特定对象无关的功能。static的有效应用程序的一个好例子是 关于实例和静态方法/变量的一些注释: 实例

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

编辑


你把它称为什么?

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

静态
方法/变量应仅用于与任何特定对象无关的功能。
static
的有效应用程序的一个好例子是

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

  • 实例变量可以访问静态变量和实例变量/方法,但静态方法只能访问其他静态变量/方法
  • 静态变量在类的所有实例中始终相同
罗伯特·马丁(Robert Martin)写了一本涵盖这一主题的好书。强烈推荐

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


对编辑进行寻址,假设这是一个变量,您可以这样访问它:

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

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


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

任何应用程序中的大多数逻辑都将模块化,并在一些共享字段上操作。这就是为什么大多数方法都是非静态的。本例中的“字段”可以是“firstName”等基本字段,但在其他情况下,“字段”是其他类的实例,如DataAccess(DAO)类

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

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

public class StringUtil{

  public static String convertToHex(String orig){

  }
}

Java没有所谓的“静态类型”。你是说静态的内部类吗?你能给出一个代码示例吗?Java是一种“面向对象”的语言。实例化对象的能力是存在的,因为这是一个好的模式。当然,静态对象/方法也有其位置。如果问题只是你是否应该有时使用对象,那么答案是“是”。请查看一些示例…@Greg Hewgill:检查我的编辑。这是一个静态成员(假设它是类的成员)。使用静态成员并不是“避免对象实例化”,而是与使用非静态成员具有完全不同的含义。更多细节请参见下面的答案。@Greg Hewgill:是的,我现在理解了引用的部分!!谢谢@乔纳:所以,如果我必须在整个应用程序中共享变量,那么使用静态方法/变量就可以了?@Deepak:这样使用它就可以成为所谓的“全局变量”。大多数情况下,有比全局变量更好的方法在应用程序中共享对象。@Jonah:我很清楚如何使用静态方法/变量,但我只是想知道经常使用静态方法/变量是否是一种罪恶:)@Deepak:如果它实际上是一种罪恶,那么它只是一种罪恶。如果这是处理问题的正确方法,那么就去做。也许如果你有一些细节,你可以问一个新问题,看看在一个特定的问题上是否最好使用静态方法。@Jonah:现在你在php论坛上的帖子给我介绍了一个新术语“依赖注入”。我现在想做更多的研究!!