如何在另一个 class 中调用列表对象

How to call list objects inside another class

我在 class 中有一个名为 Scorer.java 的列表对象,我想在另一个名为 class 中导入 aLinksbLinks 对象16=] 获取打印 aLinks.size()bLinks.size() 我尝试先导入 class 名称调用对象,但我无法这样做。你能告诉我如何将列表对象从 class 导入另一个吗?这是 classes:

我的Scorer.java

 public class Scorer {
 public static List<LinkNode> score(LinkNode sourceLink, List<LinkNode> links){

 List<LinkNode> aLinks = new LinkedList<>();
 List<LinkNode> bLinks = new LinkedList<>();

    for (LinkNode link : links) {
        if(isbLink(sourceLink, link)) { 
            bLinks.add(link);
        } else {
            aLinks.add(link);
        }
    }

我的另一个classMyParser.java

public class MyParser {
private static final String[] PARSE_TAGS = new String[]{"a[href", "area[href"};


public static List<LinkNode> parse(LinkNode inputLink){
    Set<LinkNode> outputLinks = new LinkedHashSet<>();
    try {
         Document parsedResults = Jsoup
                .connect(inputLink.getUrl())
                .timeout(READ_TIMEOUT_IN_MILLISSECS)
                .get();

        String tag;
        Elements elements;
        List<LinkNode> result;

        //a[href
        tag = "a[href";
        elements = parsedResults.select(tag);
        result = toLinks(inputLink, elements, tag);
        outputLinks.addAll(result);

        // I want to print `aLinks.size()` and `bLinks.size()` here

    } 

    return new LinkedList<>(outputLinks);
}

您必须在 Scorer class

中将所需变量声明为全局变量 public 以及 static
 public class Scorer {

 public static List<LinkNode> aLinks = new LinkedList<>();
 public static List<LinkNode> bLinks = new LinkedList<>();
 public static List<LinkNode> score(LinkNode sourceLink, List<LinkNode> links){

    for (LinkNode link : links) {
        if(isbLink(sourceLink, link)) { 
            bLinks.add(link);
        } else {
            aLinks.add(link);
        }
    }
   }
}

然后在MyParserclass中调用class_name.(点)static_variable.

然后在 MyParser class 中试试这个:

System.out.println(Scorer.aLinks.size()+ " " + Scorer.bLinks.size());

如果 class 位于不同的包中,您将需要建立链接 public。但是您还需要将其设为静态并将其变成 class

的字段
public class Scorer {
    public static List<LinkNode> aLinks = new LinkedList<>();

然后您可以访问它 Scorer.alinks

直接打电话

   MyParser myparser = new MyParser (); 
   myparser.parse(scorerInstance.getAlinks());
   myparser.parse(scorerInstance.getBlinks());

其中 scorerInstance 是 MyScorer 的一个实例。您应该像这样在 MyScorer Class 中为 aLinksbLinks 添加吸气剂:

 public List<LinkNode> getALinks() {
      return  aLinks;
  }

 public List<LinkNode> getBLinks() {
      return  bLinks;
  }

首先,aLinksbLinks 应该是 Scorer class 的成员,不应在 class 的方法内声明。

像这样:

public class Scorer {
    public List<LinkNode> aLinks = new LinkedList<>();
    public List<LinkNode> bLinks = new LinkedList<>();
}

其次,你必须在MyParserclass中得到一个Scorer对象。然后你可以访问 aLinksBLinks。这应该是这样的:

Scorer myScorer = new Scorer();
System.out.println(myScorer.aLinks().size());
System.out.println(myScorer.bLinks().size());

这应该添加到 MyParser class 中的注释部分。

第三,如果您的 score 方法是静态的,那么您的 score 方法中也应该有一个 Score class 的实例。您可以将该实例传递给 score 方法。像这样:

public static List<LinkNode> score(LinkNode sourceLink, List<LinkNode> links, Score myScore){
    //myScore.aLinks or myScore.bLinks can be used here
}