我了解 Java 基础知识,现在我正在阅读 Effective Java。该书建议使用静态工厂方法而不是构造函数。所以我有这样的 Groovy 代码:
public class Anto {
public static void main(String[] args) {
println Java.javaInstance()
}
}
class Java {
public static Java javaInstance() {
return this
}
}
编译时出现如下错误:
Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'class Java' with class 'java.lang.Class' to class 'Java'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'class Java' with class 'java.lang.Class' to class 'Java'
at Java.javaInstance(Anto.groovy:9)
at Java$javaInstance.call(Unknown Source)
at Anto.main(Anto.groovy:3)
我哪里出错了?
最佳答案
您可以使用 return new Java();
来完成。静态方法无法访问 this
。
编辑:
这些静态工厂通常是单例的,这意味着只能使用该类的一个实例(例如,通常是与数据库的连接)。如果您想将此维度添加到您的 Java
类,请使用如下私有(private)静态属性:
class Java {
private static Java instance;
public static Java javaInstance() {
if(instance == null) {
instance = new Java();
}
return instance;
}
}
关于java - 如何通过静态工厂方法返回一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10444615/