我在网站上看到过处理具有多个参数的泛型的示例,但没有一个适用于我的情况.
所以这是交易:我正在尝试学习Java泛型,并决定创建一个简单的二进制数组搜索实用程序函数.我正在使用自定义对象和整数进行测试.要获得有关错误和警告的反馈,我正在使用Eclipse.这是我有的:
public static int binarySearch(Comparable[] array,Comparable item,int start,int end) { if(end < start) { return -1; } int mid = (start + end) / 2; if(item.compareto(array[mid]) > 0) { return binarySearch(array,item,mid + 1,end); } else if(item.compareto(array[mid]) < 0) { return binarySearch(array,start,mid - 1); } else { return mid; } }
所以很明显我得到Raw类型的警告,说泛型应该参数化.如果我有多个参数需要是同一类型,我怎么能正确地做到这一点?
解
以下是使用泛型和正确参数检查的工作解决方案:
public static <T extends Comparable<? super T>> int binarySearch(T[] array,T item,int end) { if(array.length == 0) { return -1; } if(item == null) { return -1; } if(start < 0) { return -1; } if(end < start) { return -1; } int mid = (start + end) / 2; if(item.compareto(array[mid]) > 0) { return binarySearch(array,mid - 1); } else { return mid; } }
解决方法
原文地址:https://www.jb51.cc/java/127761.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。