Java中是否存在类似于static class
的东西?
这样的类是什么意思?静态类的所有方法都需要是static
吗?
反过来也一样吗?如果一个类只包含静态方法,那么该类也必须是静态的吗?
静态类有什么好处?
Java中是否存在类似于static class
的东西?
这样的类是什么意思?静态类的所有方法都需要是static
吗?
反过来也一样吗?如果一个类只包含静态方法,那么该类也必须是静态的吗?
静态类有什么好处?
Java中是否存在类似于静态类的东西?
单例模式就像是一个静态类。我很惊讶还没有人提到它们。
public final class ClassSingleton {
private static ClassSingleton INSTANCE;
private String info = "Initial info class";
private ClassSingleton() {
}
public static ClassSingleton getInstance() {
if(INSTANCE == null) {
INSTANCE = new ClassSingleton();
}
return INSTANCE;
}
// getters and setters
public String getInfo(){
return info;
}
}
String infoFromSingleton = ClassSingleton.getInstance().getInfo()
单例模式非常适合存储ArrayLists/List/Collection类等内容...如果您经常从多个区域收集、更新、复制集合,并且需要这些集合保持同步,或者是多对一的情况。
/**
* @serial include
*/
static class UnmodifiableSet<E> extends UnmodifiableCollection<E>
implements Set<E>, Serializable {
private static final long serialVersionUID = -9215047833775013803L;
UnmodifiableSet(Set<? extends E> s) {super(s);}
public boolean equals(Object o) {return o == this || c.equals(o);}
public int hashCode() {return c.hashCode();}
}
public static <T> Set<T> unmodifiableSet(Set<? extends T> s) {
return new UnmodifiableSet<>(s);
}
public class MyClass {
// Static method
static void myStaticMethod() {
System.out.println("Static methods can be called without creating objects");
}
// Public method
public void myPublicMethod() {
System.out.println("Public methods must be called by creating objects");
}
// Main method
public static void main(String[ ] args) {
myStaticMethod(); // Call the static method
// myPublicMethod(); This would output an error
MyClass myObj = new MyClass(); // Create an object of MyClass
myObj.myPublicMethod(); // Call the public method
}
}