下面是一个通用搜索算法的实现:
接口:
public interface Comparable<T extends Comparable<T>> {
int compare(T arg);
}
public abstract class CompareSort<T extends Comparable<T>> {
protected boolean less(T v, T w) {
return (v.compare(w) < 0);
}
protected void swap(T[] args, int i, int j) {
T swap = args[i];
args[i] = args[j];
args[j] = swap;
}
public abstract void sort(T[] args);
public class SelectionSort <T extends Comparable<T>> extends CompareSort<T> {
@Override
public void sort(T[] args) {
int N = args.length;
for (int i = 0; i < N; i++) {
int min = i;
for (int j = i + 1; j < N; j++) {
if (less(args[j], args[min])) {
min = j;
}
}
swap(args, i, min);
}
}
public class StringSorter {
public static <T extends Comparable<T>> void main(String[] args) throws IOException {
ArrayList<String> list = new ArrayList<String>();
int i = 0;
while (i < 10) {
Scanner s = new Scanner(System.in);
String str = s.nextLine();
list.add(str);
i++;
}
String[] a = list.toArray(new String[list.size()]);
// Create a sort object, use it on a, and print the sorted array.
SelectionSort<String> selection = new SelectionSort<String>();
selection.sort(a);
for (i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}
SelectionSort<String> selection = new SelectionSort<String>();
(方括号=弧形括号)
问题出在哪里?我想不通...对泛型参数T也进行了扩展。
与其创建自己的carable
,而不是创建string
不实现的carable
,不如使用Java的java.lang.carable
,string
实现。
应该如何声明“GenericBo Bo”实例?正确的代码是什么?
我有2个抽象的类操纵泛型和一个工厂与泛型。父级独立于trips对象和因式分解代码。儿子只基于trips。 Eclipse上的AbstractTripBasedPurchaseExtractor第9行出现错误:Bound mismatch:类型TRIP_PURCHASE不是bounded参数的有效替代品 类型的 此处:extends AbstractPurchaseExtractor“ 在son类上
问题内容: 与完全跳过它们相比,在类中使用通配符类型的泛型有什么优势吗? 问题答案: 有很多优点。 他们不会像使用原始类型那样产生编译器警告 它们提供了更多的类型安全性。例如,考虑是否是。如果您使用代替,则可以执行以下操作: 即使该列表仅 应 包含s。如果返回,则您将无法添加 任何 内容(除外),因为列表类型未知。 他们记录的东西与原始类型完全不同,即使用某种 未知但特定的类型进行输入 。
我正面临以下问题: “链”来自ViewModelHelper类定义 2) 2.1),->可以用替换 如果我将2.1)应用于1.1)&1.2),我们可以看到,参数T是一致的 从1)遵循从2)遵循,从2.1)遵循可以被替换,如果我正确理解,这个错误应该不会出现,有人能解释一下吗?为什么eclipse会给我这个错误? 谢谢!
绑定不匹配:类型的泛型方法不适用于参数()。推断的类型不是有界参数的有效替代品。 使用以下代码: 为什么这个无效?扩展,那么为什么与不匹配呢? 我如何约束element()方法接受资源类对象或任何资源子类对象作为参数?