我正在用java构建一个客户端-服务器应用程序(使用netbeans)。在客户端我有3个类和一个Connection
类来处理从/到服务器的发送和接收数据。这3个类使用相同的连接类,所以我认为创建一个全局连接会很有用,不同的类每次需要发送/接收数据时都会使用该连接。
所以从 C# 和 c++ 我知道你可以声明一个静态类,但是在 Java 中不可能声明静态类..有什么想法吗?
我正在用java构建一个客户端-服务器应用程序(使用netbeans)。在客户端我有3个类和一个Connection
类来处理从/到服务器的发送和接收数据。这3个类使用相同的连接类,所以我认为创建一个全局连接会很有用,不同的类每次需要发送/接收数据时都会使用该连接。
所以从 C# 和 c++ 我知道你可以声明一个静态类,但是在 Java 中不可能声明静态类..有什么想法吗?
引入全局状态通常被认为是不好的做法,但它肯定有它的用例。因此,您可能需要考虑单例模式。单例维基百科
在 java 中,一个简单的实现可能如下所示(未经测试的代码):
public class MyConnectionClass {
private static final MyConnectionClass SINGLE_INSTANCE = new MyConnectionClass();
private MyConnectionClass() {}
public static MyConnectionClass getInstance() {
return SINGLE_INSTANCE;
}
}
然后,您可以在需要时使用单例实例
MyConnectionClass.getInstance()
请注意,该类有一个私有构造函数。这可以确保您不能使用
MyConnectionClass not_singleton_anymore = new MyConnectionClass()
也可以使用枚举,有些人认为枚举是在 Java 中实现单例的最佳方法。从维基百科复制的示例:
public enum Singleton {
INSTANCE;
public void execute (String arg) {
//... perform operation here ...
}
}
希望有帮助。
我会建议你创建一个实例并将其传递给每个其他类的构造函数..所以你将为每个类都有相同的实例..它将处于组合关系
Java 中类的静态修饰符是隐含的:如果 Java 中的类中的所有内容都是静态的,那么我想可以说它是静态类。
实际上,即使 Java 确实有一个 static 类修饰符,其行为也不会与在每个元素之前放置 static 不同。
只需修改所有内容,static
您就会没事的。如果您愿意,请添加一个私有构造函数,使其无法被实例化。