相关疑难解决方法(0)

为什么Java Generics不支持原始类型?

为什么Java中的泛型使用类而不是基本类型?

例如,这工作正常:

List<Integer> foo = new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

但这是不允许的:

List<int> bar = new ArrayList<int>();
Run Code Online (Sandbox Code Playgroud)

java generics primitive

222
推荐指数
5
解决办法
7万
查看次数

Java:原始数据类型的数组不是autobox

我有这样的方法:

public static <T> boolean isMemberOf(T item, T[] set)
{
    for (T t : set) {
        if (t.equals(item)) {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用charfor 调用此方法T:

char ch = 'a';
char[] chars = new char[] { 'a', 'b', 'c' };
boolean member = isMemberOf(ch, chars);
Run Code Online (Sandbox Code Playgroud)

这不起作用.我期望char,并char[]得到autoboxed至CharacterCharacter[],但是这似乎并没有发生.

任何见解?

java generics autoboxing

29
推荐指数
2
解决办法
2万
查看次数

你能把一个int数组传递给java中的泛型方法吗?

我正在玩一些代码katas并试图同时更好地理解java泛型.我有这个小方法打印数组,就像我喜欢看到它们一样,我有几个辅助方法接受一个'事物'数组和一个索引,并返回索引上方或下方的"事物"数组(这是一个二进制搜索算法).

两个问题,

#1我可以避免在splitBottom和splitTop中转换为T吗?它感觉不对,或者我以错误的方式解决这个问题(不要告诉我使用python或其他东西..;))

#2我是否必须编写单独的方法来处理原始数组,还是有更好的解决方案?

public class Util {

    public static <T> void print(T[] array) {
        System.out.print("{");
        for (int i = 0; i < array.length; i++) {
            System.out.print(array[i]);
            if (i < array.length - 1) {
                System.out.print(", ");
            }
        }
        System.out.println("}");
    }

    public static <T> T[] splitTop(T[] array, int index) {
        Object[] result = new Object[array.length - index - 1];
        System.arraycopy(array, index + 1, result, 0, result.length);
        return (T[]) result;
    }

    public static <T> T[] splitBottom(T[] array, int index) {
        Object[] result …
Run Code Online (Sandbox Code Playgroud)

java generics

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

generics ×3

java ×3

autoboxing ×1

primitive ×1