我对OOP和JSoup很新,所以我不知道出了什么问题。我有一个版本的代码,我没有使用OOP正确显示网页的标题,但我的getTitle()方法在此代码中返回null。我希望它返回网页的名称。我使用调试器,发现文档正在连接到网站。
package nld.dailyquotes;
import java.io.IOException;
import java.util.ArrayList;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class DailyQuotes {
private Document doc;
private String title;
public void setDocument(String url){
try {
doc = Jsoup.connect(url)
.userAgent("Chrome")
.get();
}
catch (IOException e) {
e.printStackTrace();
}
}
public Document getDocument () {
return doc;
}
public void setTitle(){
title = doc.title();
}
public String getTitle(){
return title;
}
public static void main (String[] args){
DailyQuotes dq = new DailyQuotes();
dq.setDocument("http://www.brainyquote.com/quotes/topics/topic_inspirational.html");
System.out.println(dq.getTitle());
}
答案 0 :(得分:2)
getTitle
只返回字段title
的值,默认为null
。造成这种情况的原因是你永远不会打电话给setTitle
,恕我直言,这是个交错。
也就是说,按照惯例,setTitle
应该应用一个值,而不是检索一个值。相反,我会摆脱setTitle
方法,而只是在getTitle
方法中使用它的功能,例如......
public String getTitle(){
return doc == null ? null : doc.title();
}
这也意味着您根本不需要title
字段......
答案 1 :(得分:0)
此代码从不调用setTitle()
,那么您希望标题与null
的确是什么?