我正在阅读该项目的一些代码:https://code.google.com/p/java-google-translate-text-to-speech/我发现了这样的东西:
public class Translator {
private static Translator translator;
private Translator() {
}
public synchronized static Translator getInstance() {
if (translator == null) {
translator = new Translator();
}
return translator;
}
public void translate(TextTranslate textTranslate) throws APIError {
Parse parse = new ParseTextTranslate(textTranslate);
parse.parse();
}
public String translate(String text, String languageInput,
String languageOutput) throws APIError {
Text input = new Text(text, languageInput);
TextTranslate textTranslate = new TextTranslate(input, languageOutput);
Parse parse = new ParseTextTranslate(textTranslate);
parse.parse();
return textTranslate.getOutput().getText();
}
public String detect(String text) throws APIError {
Text input = new Text(text);
Parse parse = new ParseTextDetect(input);
parse.parse();
return input.getLanguage();
}
}
那么该类包含同一个类的实例,那不是会出现无限合成吗?
最佳答案
Java 中根本不存在“无限组合”的危险。即使你编码
class Node {
Node next;
Node(){...}
void setNext( Node x ){ next = x; }
Node getNext(){ return next; }
}
你不会像一组俄罗斯娃娃那样将一个节点放在另一个节点中。请记住:“存储对象”的变量不包含该对象,该对象将愉快地生活在堆上。变量(此处:next
)保存对对象的引用。
粗略的 Node 类会产生一个 Node 对象的链,每个引用它的下一个 Node,直到一个 null
存储在 中。 >下一步
,就结束了。
关于java - Java 类中的无限组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25105406/