没有字段的类叫什么?我是 Java 编程的初学者,我正在尝试理解和学习类,所以我有以下类“DalUser”,它没有字段,只有方法,例如名为 Dal 的文件夹中的 validateSession:
import com.app.Be.BeUser;
public class DalUser{
public BeUser validateSession(String user, String password)
{
...
}
我有一个 BeUser 类,它有用户和密码字段,位于另一个名为 Be 的文件夹或包中。这是一个特殊类型的类还是一个普通类,尽管没有任何字段?
最佳答案
What is a class without fields called?
这个1没有普遍适用的名称:
没有字段的类没有明确的状态,但严格来说,每个 Java 对象都有与其互斥量相关联的状态。因此称它们为“无状态类”有点牵强。
没有字段的类可能是“辅助类”,但没有字段既不是必要条件也不是充分条件。
没有状态的实例也是不可变的,因此您可以将没有字段的类称为“不可变类”……尽管锁定用例也适用于此。
辅助类和无状态类的另一个区别是该类是否被设计为实例化。帮助程序类(在正常使用中)由 static
方法组成,并且未实例化。 (实例没有用处)。无状态类通常被设计为实例化,并传递给其他类,这些类实际上将对该实例进行方法调用;例如作为“政策对象”。
还有一个“基类”用例的子案例,其中基类中没有字段。 (在那种情况下,称该类为“无状态”是一种误导,因为子类中通常有状态。)
简而言之,您需要检查类及其实际使用方式,以确定最适合它的标签。
在您的具体示例中,最好将代码描述为无状态类。这是因为它设计可以在不同的上下文中实例化和传递,但功能不依赖于对象本身的任何状态。
这里有一些其他的例子来说明为什么没有简单的答案。
1) 这是一个辅助类,但它有一个(静态)字段。
public class Plumbing {
private static nosTapsFixed;
private Plumbing() { }
public class fixTap(Tap t) {
// fix 't'
}
}
2) 这是一个基类。它没有字段,但显然不打算用作辅助类。
public abstract class Tradesman {
// no fields
public abstract Invoice issueInvoice();
}
3) 这是一个没有字段的类 (java.lang.Object
) 的使用,显然不是“助手”。
final Object myLock = new Object();
...
synchronized (myLock) {
...
}
4) 这是另一个没有字段但不是助手的类的示例。
public enum Agreement {
YES, NO
}
1 - 但如果您真的想要一个名字,“villein class”怎么样? Villeins 没有任何田地....
关于java - 没有字段的类是否有特殊名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30947789/