gpt4 book ai didi

java - 通用类方法返回一些值

转载 作者:行者123 更新时间:2023-11-30 07:56:55 25 4
gpt4 key购买 nike

我收到 ClassCastException。我一直在关注这个答案,但没有做对。 Cast Object to Generic Type for returning
冒泡排序.java

import java.util.ArrayList;
import java.util.List;

public class BubbleSort<T extends Number> {

public List<T> list;

@SuppressWarnings("serial")
public BubbleSort() {
list = new ArrayList<T>() {
};
}

public void add(T obj) {
list.add(obj);
}

public void sort() {
for (int i = 0; i < list.size(); i++) {
for (int j = 0; j < list.size() - 1; j++) {
if (list.get(j).intValue() > list.get(j + 1).intValue()) {
T swapElement = list.get(j);
list.set(j, list.get(j + 1));
list.set(j + 1, swapElement);
}
}
}
}

public <T> T getArray(Class<T> clazz){
T[] returnArray = (T[]) list.toArray();
return clazz.cast(returnArray);
}

}

主程序.java

import java.lang.reflect.Array;


public class MainProgram {

public static void main(String args[]){
BubbleSort<Integer> bubbleSort = new BubbleSort<>();
bubbleSort.add(new Integer(1));
bubbleSort.add(new Integer(2));
bubbleSort.add(new Integer(6));
bubbleSort.add(new Integer(5));
bubbleSort.add(new Integer(4));
bubbleSort.add(new Integer(3));
Class<Integer[]> intArrayType = (Class<Integer[]>) Array.newInstance(Integer.TYPE, 0).getClass();
Integer[] sortedArray = (Integer[]) bubbleSort.getArray(intArrayType);
for(int i = 0 ; i < sortedArray.length; i++){
System.out.println(sortedArray[i]);
}
}

}

控制台

Exception in thread "main" java.lang.ClassCastException: Cannot cast [Ljava.lang.Object; to [I at java.lang.Class.cast(Unknown Source) at BubbleSort.getArray(BubbleSort.java:32) at MainProgram.main(MainProgram.java:15)

最佳答案

您的代码中存在相当多的困惑和错误假设。如果您使用的是 Java 8,我将建议一种更简单的工作方法,而不是详细说明所有这些方法(有些已在其他答案中介绍):

public class BubbleSort<T extends Number> {

public List<T> list;

public BubbleSort() {
list = new ArrayList<T>();
}

//...

public T[] getArray(IntFunction<T[]> arrayGenerator) {
return list.stream().toArray(arrayGenerator);
}
}

public class MainProgram {

public static void main(String args[]) {
BubbleSort<Integer> bubbleSort = new BubbleSort<>();
//...
Integer[] sortedArray = bubbleSort.getArray(Integer[]::new);
//...
}
}

关于java - 通用类方法返回一些值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41713127/

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