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

标签 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());

}

最佳答案

getTitle 仅返回字段 title 的值,默认情况下为 null。这是因为您从未调用 setTitle,恕我直言,这是交互交互的。

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

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

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

关于java - 为什么我的 JSoup getTitle() 方法返回 null 而不是网页标题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24856677/

相关文章:

oop - 将 RInside 的 'R' 实例作为类/方法之间的参数传递

Jsoup.connect(string) 编码问题

java - 如何解析html并保留所有换行符?

java - 使用 GlassFish 从 SOAP 服务 Java 抛出异常 -> 故障

java - 如何在Ajax成功方法中打开Spring ModelAndView响应作为一个完整的页面

java - OneToMany/ManyToOne 关系的 Hibernate 标准

java - 使用 JSOUP 从另一个网站获取数据

java - 在 Java 中建立的 HTTP 连接因重定向过多而失败?

MATLAB 类 getter 和 setter

java - 为什么Java允许使用对象实例访问静态成员