gpt4 book ai didi

java - 如何避免此代码中的运行时类型检查?

转载 作者:行者123 更新时间:2023-12-01 12:16:14 24 4
gpt4 key购买 nike

作为作业的一部分,我编写了以下代码将二维数组编码为双向链表。

RunLengthEncoding 类负责编码/解码功能。在该类的实现过程中,需要对一些变量进行类型转换,以在运行时进行类型检查(String)。

下面是进行类型转换的代码行:

class RunLengthEncoding {
private DList2 list;


private String nextRun() {
Object obj = null;
.....
obj = this.list.nTh(this.sizeOfRun);
return (String)obj;
}

public void check() {
....
while(node != this.list.sentinel){
int nodetype = Utility.regexChecker("\\D{1,}", (String)node.runObject, 1);
}
}

}

====================

完成类型转换是因为,因为双向链表(class DList2{..})是DListNode2的列表,它接受并返回类型的对象>对象

class DListNode2{
Object runObject;
DListNode2 prev;
DListNode2 next;
}

我的问题:

当我使用 DList2 类时,我应该如何避免在 RunLengthEncoding 类中进行类型转换以避免运行时类型检查?

注意:我是一个java初学者。

最佳答案

您应该使用泛型。例如:

class DList<T> {
DListNode2<T> head; // Or whatever properties your class contains
}

class DListNode2<T> {
T runObject;
DListNode2<T> prev;
DListNode2<T> next;
}

在你的 RunLengthEncoding 中类声明list像这样:DList<String> list; 。这样您就可以定义列表中参数的类型,并且在从列表中检索对象时不必进行转换。

查看标准 Java Collections API 类,例如 LinkedList 。他们以同样的方式做到这一点。

关于java - 如何避免此代码中的运行时类型检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26994344/

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