如何在另一个 class 中调用列表对象
How to call list objects inside another class
我在 class 中有一个名为 Scorer.java
的列表对象,我想在另一个名为 class 中导入 aLinks
和 bLinks
对象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);
}
}
}
}
然后在MyParser
class中调用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 中为 aLinks
和 bLinks
添加吸气剂:
public List<LinkNode> getALinks() {
return aLinks;
}
public List<LinkNode> getBLinks() {
return bLinks;
}
首先,aLinks
和 bLinks
应该是 Scorer
class 的成员,不应在 class 的方法内声明。
像这样:
public class Scorer {
public List<LinkNode> aLinks = new LinkedList<>();
public List<LinkNode> bLinks = new LinkedList<>();
}
其次,你必须在MyParser
class中得到一个Scorer
对象。然后你可以访问 aLinks
和 BLinks
。这应该是这样的:
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
}
我在 class 中有一个名为 Scorer.java
的列表对象,我想在另一个名为 class 中导入 aLinks
和 bLinks
对象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);
}
}
}
}
然后在MyParser
class中调用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 中为 aLinks
和 bLinks
添加吸气剂:
public List<LinkNode> getALinks() {
return aLinks;
}
public List<LinkNode> getBLinks() {
return bLinks;
}
首先,aLinks
和 bLinks
应该是 Scorer
class 的成员,不应在 class 的方法内声明。
像这样:
public class Scorer {
public List<LinkNode> aLinks = new LinkedList<>();
public List<LinkNode> bLinks = new LinkedList<>();
}
其次,你必须在MyParser
class中得到一个Scorer
对象。然后你可以访问 aLinks
和 BLinks
。这应该是这样的:
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
}