gpt4 book ai didi

java - 如何使用新方法在函数内传递变量

转载 作者:行者123 更新时间:2023-11-30 03:34:07 25 4
gpt4 key购买 nike

我的网络爬虫项目中有以下代码:

   public static void main(String[] args) throws Exception {
String frontierUrl = "http://www.cnn.com";

//creates a new instance of class WebCrawler
WebCrawler webCrawler = new WebCrawler();

//Add the frontier url to the queue first
webCrawler.enque(new LinkNode(frontierUrl));
webCrawler.processQueue();

}

void enque(LinkNode link){
link.setEnqueTime(new Date());
QUEUE.add(link);
}

这是我的 LinkNode 类:

public class LinkNode implements Comparable<LinkNode>{
private String url;

public LinkNode(String url) {
this.url = url;
}

它工作正常,没有错误。我试图了解这条线是如何工作的:

  webCrawler.enque(new LinkNode(frontierUrl));

所以我不想直接在其中传递变量“frontierUrl”,而是想更详细地编写这一行,例如使用“new”的语法形式..:

abc a = new abc ( );

既然我是java新手,有没有办法更详细地编写这一行以便更好地理解它?或者这是传递它抛出函数的正式方法?

最佳答案

是的,有一些方法。您需要了解Constructors这是用 Java 创建类的一种方法。

现在您的代码只允许执行以下操作:

LinkNode frl = new LinkNode(frontierUrl)
webCrawler.enque( frl ); //you are passing your LinkNode Instance

另一种方法是更改​​ LinkNode 构造函数和 url 变量范围:

public class LinkNode implements Comparable<LinkNode>{
public String url;

public LinkNode() {} // this is called default constructor and it is
// not needed at all

并使用如下代码:

LinkNode frl = new LinkNode()
frl.url = frontierUrl;
webCrawler.enque( frl ); //you are passing your LinkNode Instance

另一种方法是为 LinkNode url 变量创建一个 setter 方法,例如

public class LinkNode implements Comparable<LinkNode>{
private String url;

public LinkNode() {}

public void setUrl(String url){
this.url = url;
}

并将其用作

LinkNode frl = new LinkNode()
frl.setUrl( frontierUrl );
webCrawler.enque( frl ); //you are passing your LinkNode Instance

最后一种方法比第二种方法更好,因为它正在做 Encapsulation这是 Java 上的一个很好的实践。

关于java - 如何使用新方法在函数内传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28380437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com