相关疑难解决方法(0)

如何调用需要Class <T>对象作为参数的方法?

我有一个类,我需要构造函数来初始化变量数组.我在互联网上研究并堆栈溢出但现在我仍然坚持如何调用该方法.例如,我怎么能在我的例子中调用method1?

public class SomeClass<T>{

   public T[] array;

   //Constructor
   public SomeClass()
   {
        Method1(T, 5); //?  error
        Method1(5); //?   error
        Method1(new T().GetType(), 5); //? error
        // HOW CAN I CALL THAT METHOD?

        array = (T[])(new Object[5]); // this gives an error too
   }

   private void Method1(Class<T> type, int size)
   {
       array = (T[])Array.newInstance(type, size);
   }
}
Run Code Online (Sandbox Code Playgroud)

java generics casting

3
推荐指数
1
解决办法
139
查看次数

参数化类型的数组

我无法确定以下RHS预期的类型参数

ArrayList<Pair<ParseNode,ParseNode>>[] nodes = new ArrayList[indexes.length];
Run Code Online (Sandbox Code Playgroud)

为什么副本<Pair<ParseNode,ParseNode>>不合法?

java generics

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

如何创建泛型类型的数组?

如何创建泛型类型的数组?泛型Arrays.copyOf()方法如何工作?它返回泛型数组的副本.因此可以创建通用数组.但是怎么样?如何编写类似的方法copyOf()

java arrays generics

2
推荐指数
1
解决办法
580
查看次数

Java有没有办法初始化类型安全的通用数组?

我有以下代码

public class Container<T> {
    private T element;
    private T[] tarray;

    public T getElement() {
        return element;
    }

    public void setElement(T element) {
        this.element = element;
    }

    public void add(T element) {
        tarray[0] = element;
    }

    public void CreateArray(int size) {
        //Can this be cleaned up better?
        tarray = (T[]) new Object[size];
    }

    public T get() {
        return tarray[0];
    }

    public Container(T someElement) {
        this.element = someElement;
    }

    public Container() {
    }

    public static void main(String[] args) {
        Container<String> myContaier1 …
Run Code Online (Sandbox Code Playgroud)

java generics

2
推荐指数
1
解决办法
4636
查看次数

实例化通用类的JAVA数组

E[] arr = (E[])new Object[INITIAL_ARRAY_LENGTH];
Run Code Online (Sandbox Code Playgroud)

上面的代码是从取以下职位:

E通用类类型在哪里.当我们使用Object类型实例化数组时,编译器/ JVM如何知道需要分配多少内存.我的理解是,类型转换只允许更改引用类型,但不允许更改底层对象结构.

java arrays generics allocation instantiation

2
推荐指数
1
解决办法
112
查看次数

java 8闭包存储在哪里?

我编写了这个类,可以使用构建器模式构建类型为T的数组,将值存储在闭包中,直到实际构造数组.

public class ArrayBuilder<T> {

    final Class<T> type;

    public ArrayBuilder(Class<T> type){
        this.type = type;
    }

    private Supplier<Supplier<Store>> start = () -> {
        final Store element = new Store(-1, null, null);
        return () -> element;
    };

    private class Store {
        final Integer index;
        final T val;
        final Supplier<Store> getNextVal;

        public Store(Integer index, T val, Supplier<Store> getNextVal) {
            this.index = index;
            this.val = val;
            this.getNextVal = getNextVal;
        }
    }

    private Supplier<Store> queue(Integer index, T value, Supplier<Store> next) {
        final Store element = …
Run Code Online (Sandbox Code Playgroud)

java closures java-8

2
推荐指数
1
解决办法
324
查看次数

java中的通用数组创建

可能重复:
在Java中创建泛型类型的实例?
Java如何:通用阵列创建

我正在尝试创建一个泛型类.这是我的类文件.

public class TestClass<T> implements AbstractDataType<T>{

    T[] contents;

    public TestClass(int length) {
        this.contents = (T[])new Object[length];
    }
}
Run Code Online (Sandbox Code Playgroud)

但内容只有从中继承的方法Object class.如何为内容创建抽象数组?

java generics

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

如何在Java中创建泛型类型的固定大小数组?

我有这个代码,它给我一个错误,"无法创建一个BST_Node的通用数组"

    BST_Node<Integer>[] arrayTree = new BST_Node<Integer>[treeSize];
Run Code Online (Sandbox Code Playgroud)

我不知道为什么,因为我有

    Integer[] arrayTree = new Integer[treeSize];
Run Code Online (Sandbox Code Playgroud)

它完美无缺.为什么它不能创建具有泛型类型的固定大小数组,这是正确的方法吗?

java arrays generics

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

T类数组(Java泛型)

虽然此代码成功编译,但它会在运行时抛出类转换异常错误:

class Test {
    public static void main(String[] args) {
        MyArray<String> x = new MyArray<>();
        x.a[0] = "test string";
    }
}

class MyArray<T> {
    T[] a;

    MyArray() {
        this.a = (T[]) new Object[1];
    }
}
Run Code Online (Sandbox Code Playgroud)

错误消息:

Exception in thread "main" java.lang.ClassCastException:
[Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
    at Test.main(Test.java:4)
Run Code Online (Sandbox Code Playgroud)

我知道的一个可能但简单的解决方案是将数组声明为Object类型的数组,然后在想要从数组中检索数组时将数组元素转换回T,如下所示:

class Test {
    public static void main(String[] args) {
        MyArray<String> x = new MyArray<>();
        x.a[0] = "test string";
        System.out.println(x.get(0));
    }
}

class MyArray<T> {
    Object[] a;

    MyArray() { …
Run Code Online (Sandbox Code Playgroud)

java

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

泛型与阵列

我在许多答案(例如,这个)中看到,使用泛型创建数组的方法如下:

T[] array = (T[]) new Object[SIZE];
Run Code Online (Sandbox Code Playgroud)

我想尝试做类似的事情:

EntryRecipient<K,V>[] array = (EntryRecipient<K,V>[]) new Object[MAX_SIZE];
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,抛出以下错误:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [LHashTable$EntryRecipient;
Run Code Online (Sandbox Code Playgroud)

我的代码是:

HashTableEntry(包含在HashTable的私有子类中)

class HashTableEntry<K,V> {
    private K key;
    private V value;

    public HashTableEntry(K key, V value) {
        this.key = key;
        this.value = value;
    }

    public V value() {
        return value;
    }

    public K key() {
        return key;
    }
}
Run Code Online (Sandbox Code Playgroud)

EntryRecipient(作为HashTable的私有子类包含)

private class EntryRecipient<K,V> {
    private List<HashTableEntry<K,V>> entries;

    public EntryRecipient() { …
Run Code Online (Sandbox Code Playgroud)

java arrays generics

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

标签 统计

java ×10

generics ×8

arrays ×4

allocation ×1

casting ×1

closures ×1

instantiation ×1

java-8 ×1