gpt4 book ai didi

java - 拥有一个包含所有非静态方法但没有非静态字段的类是否有意义? (或所有静态字段和方法以及构造函数)

转载 作者:行者123 更新时间:2023-12-01 07:08:42 25 4
gpt4 key购买 nike

我正在查看其他人的代码。

我看到一个没有非静态字段的类,但其中大多数方法都是非静态的,要求您创建一个对象来访问有效静态操作的方法。

这是否有可能是我不理解的原因?

编辑

有人要求提供示例。这是更多信息。

例如有一个文件管理器类。唯一的字段是静态的并且是比较器。有一些方法可以执行诸如对列表中的文件进行排序、对文件进行计数、复制文件、将文件移动到存档文件夹、删除超过特定时间的文件或创建文件(基本上将基本名称作为字符串,并返回文件的末尾添加了给定的基本名称和日期/时间。)9 个非静态方法5个静态方法我没有看到静态与非静态的特定押韵原因。

一件特别奇怪的事情是有两种删除文件的方法。一种无论如何都会删除文件,另一种仅在文件为空时才将其删除。前者是静态方法,而后者不是。它们包含完全相同的代码,除了后者首先检查 file.length 是否为 0。

另一个奇怪的是一个进行加密的类 - 所有字段和方法都是静态的,但它有一个不执行任何操作的构造函数。还有一个 init() 方法,用于检查静态变量是否包含其自身的对象,如果不包含其自身的对象,则将其自身的对象实例化到该字段中,该字段永远不会被实际使用。 (似乎这是通过很多类完成的 - init 方法检查静态变量中自身的对象,如果没有实例化自身)

 private static File keyfile;
private static String KEYFILE = "enc.key";
private static Scrambler sc;

它有加密和解密的方法以及一些处理 key 和文件的方法。

这对任何人都有意义吗?我只是不明白这个东西的目的吗?还是看起来很奇怪?

最佳答案

对象没有有状态。创建仅具有行为的类实例是一个合法的用例。

为什么要费心创建一个实例?所以你可以创建一个并传递它,例如想象某种形式的计算器,它遵循特定的接口(interface),但每个实例执行不同的计算。接口(interface)的不同实现将执行不同的计算。

我经常创建带有非静态方法且没有成员的类。它允许我封装行为,并且我通常可以在以后根据实现的需要添加成员(包括非功能相关的东西,例如仪器),我通常不会将这些方法设为静态,因为这限制了我 future 的灵 active 。

关于java - 拥有一个包含所有非静态方法但没有非静态字段的类是否有意义? (或所有静态字段和方法以及构造函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18253592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com