gpt4 book ai didi

java - null 实例上是否可以使用 void 函数?

转载 作者:行者123 更新时间:2023-11-29 03:18:15 25 4
gpt4 key购买 nike

我正在尝试为一个学校项目创建一个 Internet 的小演示,我决定用 Java 来做这个,因为这是我最有经验并且完成我大部分工作的语言。

所以我为域名系统创建了 typeDNS。我还创建了一个 Table,用于存储 url 和位置。见以下代码:

类表:

public class Table {

private String url;
private DNS dns;

public Table(){
}

public String getURL(){ //Return url of a server
return this.url;
}

public void add(Something something){
//Some code to add something
}
}

类 DNS:

public class DNS {

private Table[] table = new Table[50];

public DNS(){
//Some code here
}

public void add(Something something){ //Add a server to the DNS' table

int i = 0;
while(this.table[i].getURL() != null){ //NullPointerException
i++;
}
this.table[i].add(something);
}
}

如果我想使用 DNS 类中的 void add(),我必须知道 table 中的下一个空白位置是什么。所以我尝试检索一些 url,如果它显示 url == null,我知道我有一个空位。
但是,我在 while(this.table[i].getURL() != null){ 处得到了一个 NullPointerException。这让我想知道是否有可能返回一个null的变量。这可能吗?如果是这样,我在这里做错了什么?

最佳答案

对于您的用例,使用 java.util.List 要容易得多。事实上,我会推荐 java.util.ArrayList

它就像一个数组,只是它可以增长。

table[i] 方法存在问题,因为在您当前的代码设置中,您没有正确检测到最大 i,因此,您越过了数组的末尾.要以数组方式修复它,您可以使用 for 循环。

for (int i = 0; i < table.length; i++) {
// now we will loop between 0 and the last element of the array.
... table[i] ...
}

ArrayList 显示其灵 active 的地方是需要添加到数组时。如果我有一个大小为 10 的数组,并且我想向其中添加第 11 个元素,则该数组已满。假设我使用的是真实数组,我需要

  1. 创建一个大小大于或等于 11 的新数组。
  2. 将旧数组中的每个元素复制到新数组中正确的数组索引处。
  3. 将第11个元素复制到合适的位置。

ArrayList 在它的 add(...) 方法中做了一些功能上等同于所有这些的事情。因此,您最终将编写用于向表中添加项目的代码,看起来更像这样

table.add(item);

ArrayList 除了可以更轻松地添加项目外,还可以更轻松地删除项目。如果没有它,通常您将不得不编写一些代码将项目移动到数组中间的孔中,如果您每次删除一个条目。

关于java - null 实例上是否可以使用 void 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25230852/

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