同一类型类内的Java成员对象

标签 java oop

我在查看代码库时经常看到类似这样的内容:

public class SomeClass
{
 protected static SomeClass myObject;

 //...

 public static SomeClass getObject()
 {
  return myOjbect
 }
}

我想确保我理解这背后的目的。是否确保类的一个实例即使被多次实例化也能被共享?我不确定这里的词汇,否则我会搜索答案,所以如果这个模式有名字,请告诉我。

此外,这似乎有点鸡生蛋还是蛋生鸡的定义,因为该类包含该类类型的对象。为什么这实际上并不矛盾?

谢谢!

最佳答案

这真的只在 Singleton Pattern 中常见只有这个类的一个实例。虽然它有其用途,但 Singleton 经常被过度使用和滥用(通常是为了将过程编程伪装成 OO)。它也经常出现在 Java AWT 或 Swing 的示例代码中,您通常在其中子类化 Frame/JFrame,并在 main 中创建一个实例同一个类中的方法。

Also, this seems a little chicken-and-egg definition because the class includes an object of the type of the class. Why isn't this actually paradoxical?

为什么会这样?类主要描述了该类型的实例有哪些成员——但是一个static成员不属于实例,它属于类本身,所以它没有与类(class)的“蓝图”角色有关的任何事情。因此,静态成员确实有点非面向对象。

但即使在实例级别,您也可以拥有相同类型的引用。例如,链表中的一个条目通常有两个对下一个和上一个条目的引用,它们属于同一类。

关于同一类型类内的Java成员对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3158544/

相关文章:

java - 尝试将字符串编码/解码为 Base64 时出错

java - 使用java通过tcp发送结构化数据的最简单方法是什么?

c++ - 无法从 'initializer-list' 转换为 UserController

matlab - 验证属性是 MATLAB 中抽象类的子类

java - instanceof 被认为是有害的?

java - 部署spring mvc应用程序后放置文件的css、img和js

java - 关于在 JAVA 中将子类转换为父类(super class)

java - Spring 配置 : No mapping found for HTTP request with URI in DispatcherServlet with name 'dispatcherServlet'

java - 调用方法时出错

oop - 什么是公开封装类方法的经验法则