相关疑难解决方法(0)

关于java:从`String.class`得到`String [] .class`,如果`String.class`是"运行时类型"怎么办?

这是一个变量Class<?> cls,现在我想得到另一个Array Class Object组件类型cls.

例如,如果cls= String.class,我想得到String[].class; if cls= int.class,我想知道int[].class,我该怎么办?

你看,这是很容易得到String.class来自String[].class:

Class<?> arrayCls = String[].class;
if(arrayCls.isArray()){
    Class<?> cls = arrayCls.getComponentType();
}
Run Code Online (Sandbox Code Playgroud)

但我找不到简单的方法来做相反的事情.

这是一个可能的解决方案:

Class<?> clazz = String.class;
Class<?> arrayClass = Array.newInstance(clazz,0).getClass();
Run Code Online (Sandbox Code Playgroud)

请问有什么打击方法吗?

java arrays reflection runtime class

31
推荐指数
3
解决办法
3万
查看次数

如何确定varargs数组的组件类型?

使用varargs时,结果数组的组件类型是如何确定的?

例如,该程序是否保证打印true或在技术上未指定其行为?

public static void main(String[] args) {
    foo("", 0);
}

static <T> void foo(T... arr) {
    System.out.println(arr.getClass() == Serializable[].class);
} 
Run Code Online (Sandbox Code Playgroud)

java generics variadic-functions

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

如何获取与数组类型相关联的类?

有谁知道写下面语句的更好方法:

example.mySpecialMethod(new MySpecialClass[0].getClass())
Run Code Online (Sandbox Code Playgroud)

我需要数组类型,但我不知道是否有更好的解决方案.目前这个例子适合我,但也许有人知道一个更好的方法来做同样没有new关键字.

java arrays class new-operator

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

科特林。尝试使用具体化类型来解析列表和数组

我尝试在解析 json 时使用具体化类型。它可以完美地处理单个 json 条目,但无法处理列表。

问题:

  1. String.parseList() 方法中缺少什么?
  2. 尽管赋值提前通过了一行,但为什么在 .first() 上出现 ClassCastException?
    package qa

    import com.fasterxml.jackson.databind.ObjectMapper
    import org.slf4j.LoggerFactory
    import org.testng.Assert
    import org.testng.annotations.Test

    class ReifiedParseListTest {

        data class User(var name: String = "userName", var age: Int = 0)

        val log = LoggerFactory.getLogger(this.javaClass.name)
        val objectMapper = ObjectMapper()
        val json: String = """[{"name":"Alice","age":1},{"name":"Bob","age":2}]"""
        val expected: String = "[User(name=Alice, age=1), User(name=Bob, age=2)]"


        inline fun <reified V> String.parseList(): List<V> = objectMapper
                .readValue(this, Array<V>::class.java).toList()


        @Test
        fun checkParseList_OK() {
            val actual: List<User> = objectMapper
                    .readValue(json, Array<User>::class.java).toList()

            log.info("actual.first() …
Run Code Online (Sandbox Code Playgroud)

kotlin kotlin-reified-type-parameters

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

Java中的Class.getArrayType?

我使用以下技巧来获取特定类的数组类型:

@SuppressWarnings("unchecked")
public static <T> Class<T[]> getArrayType(Class<T> componentType) {
    String arrayClassName = "[L" + componentType.getName() + ";";
    try {
        return (Class<T[]>) Class.forName(arrayClassName);
    } catch (ClassNotFoundException e) {
        throw new UnexpectedException("Can't get the array type for " + componentType, e);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,有没有更优雅的方式来获得这个?

java

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

如何从数组类型类中获取元素类型类?

我能Class<T>Class<T[]>吗?

public static <T> void doSometing(final Class<T[]> arrayType) {

    final Class<T> elementType; // = @@?
}
Run Code Online (Sandbox Code Playgroud)

或者,我可以Class<T[]>从中获得Class<T>吗?

java arrays generics class

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