为什么我的JSoup getTitle()方法返回null而不是网页标题?

时间:2014-07-21 01:47:21

标签: java oop jsoup

我对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());

}

2 个答案:

答案 0 :(得分:2)

getTitle只返回字段title的值,默认为null。造成这种情况的原因是你永远不会打电话给setTitle,恕我直言,这是个交错。

也就是说,按照惯例,setTitle应该应用一个值,而不是检索一个值。相反,我会摆脱setTitle方法,而只是在getTitle方法中使用它的功能,例如......

    public String getTitle(){
        return doc == null ? null : doc.title();
    }

这也意味着您根本不需要title字段......

答案 1 :(得分:0)

此代码从不调用setTitle(),那么您希望标题与null 的确是什么?