当我使用带有通用或参数化列表的可比接口时,我会收到一个未选中的强制转换警告。我可以使用ObjectList进行比较,但不能使用通用列表。这是我的开发,首先使用ObjectList,然后使用通用列表。
下面是我的ListNode类定义的一个片段:
public class ListNode {
private Object info;
private ListNode next;
和我的ObjectList类定义的片段:
public class ObjectList {
private ListNode list;
我的可比界面:
public interface Comparable {
public int compareTo(Object o);
}
我的ObjectList类中有一个方法,可以将对象参数与ListNode中的对象进行比较,没有问题。以下是比较代码:
if (((Comparable)o).compareTo(p.getInfo()) == 0)
我现在尝试创建一个泛型列表类,并进行类似的比较。下面是我的通用ListNode类定义的一个片段:
public class ListNode<Type> {
private Type info;
private ListNode<Type> next;
还有我的通用列表类定义的一个片段:
public class List<Type> {
private ListNode<Type> list;
我的通用可比界面:
public interface Comparable<Type> {
public int compareTo(Type t);
}
当我尝试与ObjectList类进行相同的比较时,我从我的泛型列表类中得到以下未经检查的强制转换警告:
列表java:239:警告:[未选中]未选中的强制转换找到:所需类型:可比
if (((Comparable<Type>)t).compareTo(p.getInfo()) == 0)
有什么想法吗?
下面是一些简化的代码:
public class List<Type> {
public class ListNode<Type> {
private Type info;
private ListNode<Type> next;
public ListNode() {
info = null;
next = null;
}
}
private ListNode<Type> list;
public List() {
list = null;
}
public boolean contains(Type t) {
ListNode<Type> p = list;
while (p != null && (((Comparable<Type>)t).compareTo(p.info) != 0))
p = p.next;
return p != null;
}
}
public interface Comparable<Type> {
public int compareTo(Type t);
}
将有界参数添加到列表类:
public class List<Type extends Comparable<Type>> {
解决了警告问题。但创建字符串对象列表会产生以下错误:
类型参数java。lang.string不在其范围内
首先将列表声明更改为下面的代码。这使得参数化类型必须具有可比性。
List<Type extends Comparable<Type>>
然后,您可以直接调用t.compareTo(p.info)
,无需演员阵容。其次,将ListNode类移动到它自己的文件中。
为什么您需要创建自己的可比较的
接口,而JDK中已经有一个?无法创建字符串列表的原因很简单,因为字符串没有自己的可比接口。它只实现了java。朗,可比。只需做一些重命名,事情就会清楚:你正在做的是:
public interface MyComparable<Type> {
public int compareTo(Type t);
}
public class MyList<Type extends MyComparable<Type>> {
//....
}
然后你试图创建一个
MyList
String
没有实现MyCompable
,当然它会引起问题。
问题内容: 好的,这是我的问题: 我有一个包含interfaces的列表-和扩展该接口的接口的列表:。我要设置。我不希望使用任何东西或会花费更多内存的东西,因为我正在做的事情已经非常耗费成本。我确实需要能够说。我已经尝试过,但是后来我无法将接口添加到列表中,只能将SubInterfaces 添加到列表中。有什么建议? 我希望能够做这样的事情: RecordKeeper类是包含接口列表的类(NOT
当我在浏览上面的接口时,在阅读了许多相同主题的站点后,我对这些接口的语法不是很清楚。 请考虑以下代码段: 如果每个查询都是可理解的。
我想创建一个类,比如Employee,它实现了通用接口Compariable,并重写了方法equals、hashCode和toString。。。我怎样才能做到呢? 这样可以吗 和
谁能解释一下为什么下面的代码不起作用: 但这一个有效: 换句话说,与创建普通类实例相比,接口实现何时是可互换的?当我使用compareTo()方法时会出现错误,该方法是Comparable接口的一部分,由所有包装类(如整数)实现。 所以我猜
问题内容: 我的机器上有三个接口,我想使用Java-API来获取mac地址。 我使用此代码。 但是该代码打印出来, 但是错过了eth0 。 我的操作系统Ubuntu,任何帮助。 更新资料 o / p().. blank(empty) 。 Java版本“ 1.7.0_21” Java™SE运行时环境(内部版本1.7.0_21-b11)JavaHotSpot(TM)64位服务器VM(内部版本23.21
假设您有ClassA、ClassB、ClassC和InterfaceA。 ClassA和ClassB实现interfaceA,而classC包含一个列表