Получение ArrayList из другого класса

 
 
 
Сообщения:7
Вопрос наверно глупый и построен на неправильном подходе к решению проблемы, но может подскажете что-то.
Я ковыряю вэбкраулер, он (на данном этапе) должен сканировать страницу на определенную глубину и выдавать текст с этих страниц. Я создал отдельный класс Depth_test, который парсит страницу на нужную глубину и создает в итоге ArrayList с перечнем всех ссылок. Как я могу из этого класса вытащить этот самый ArrayList в класс Main для дальнейшей с ним работы? Работать в одном классе просто методами я не хочу, так как там много еще писать и я хочу хоть это в класс запрятать.
По идее я должен создать объект этого класса и геттером его вытащить в Main, но у меня в Depth_test идет свой main(String[] args) и я не могу понять, как быть в этом случае.

import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.IOException;
import java.util.ArrayList;


public class Depth_test {
    private static final int MAX_DEPTH = 2;
    ArrayList links = new ArrayList();

    public Depth_test() throws IOException {
        links = new ArrayList();
    }

    public static void main(String[] args) throws IOException {
        ArrayList url_arr = new ArrayList();
        url_arr.addAll( new Depth_test().getPageLinks("wiki/Super_Mario_All-Stars", 0));
    }

    public ArrayList getPageLinks(String URL, int depth) {
        URL = "https://ru.wikipedia.org/" + URL;
        if ((!links.contains(URL) && (depth < MAX_DEPTH))) {
            System.out.println(">> Depth: " + depth + " [" + URL + "]");
            try {
                links.add(URL);

                Document document = Jsoup.connect(URL).get();
                Elements div_field = document.select("div[class=mw-parser-output]");
                Elements linksOnPage = div_field.select("a[href^=\"/wiki/\"]");
                depth++;
                for (Element page : linksOnPage) {
                    getPageLinks(page.select("a").attr("href"), depth);
                }
            } catch (IOException e) {
                System.err.println("For '" + URL + "': " + e.getMessage());
            }
        }
        return links;
    }

}

Зачем я в это полез вообще
 
 
Сообщения:201
Сделай это поле public:
 public ArrayList links = new ArrayList();

Или добавь к нему getter.
 
 
Сообщения:7
vallball:
Сделай это поле public:
 public ArrayList links = new ArrayList();

Или добавь к нему getter.

Спасибо, завелось
Затупил вчера, сейчас переписал метод main в Depth_test под геттер и все выводится, как нужно

    public ArrayList getURL() {
        url_arr.addAll( new Depth_test().getPageLinks("wiki/Super_Mario_All-Stars", 0));
        System.out.println(url_arr.size());
        return url_arr;
    }

Зачем я в это полез вообще
Изменен:22 сен 2020 17:48
 
Модераторы:frymock
Сейчас эту тему просматривают:Нет