Necesito hacer algunas llamadas a métodos reflexivos en Java. Esas llamadas incluirán métodos que tienen argumentos que son tipos primitivos (int, double, etc.). La forma de especificar dichos tipos al buscar el método de forma reflexiva es int.class, double.class, etc.Encuentra dinámicamente la clase que representa un tipo Java primitivo
El desafío es que estoy aceptando la entrada desde una fuente externa que especificará los tipos dinámicamente. Por lo tanto, también necesito presentar estas referencias de Clase dinámicamente. Imagine un archivo delimitado por una lista de nombres de los métodos con las listas de tipos de parámetros:
doSomething int double
doSomethingElse java.lang.String boolean
Si la entrada era algo así como java.lang.String
, sé que podría utilizar Class.forName("java.lang.String")
a esa instancia Clase espalda. ¿Hay alguna forma de utilizar ese método, u otro, para recuperar las Clases de tipo primitivo?
Editar: Gracias a todos los encuestados. Parece claro que no hay una forma integrada de hacer lo que quiero, así que me conformaré con reutilizar la clase ClassUtils
del framework Spring. Parece contener un reemplazo para Class.forName() que funcionará con mis requisitos.
La fuente del archivo ClassUtils.java parece estar rota en ese enlace. [Este me mira, a mí] (http://www.jarvana.com/jarvana/view/org/springframework/spring-core/3.1.0.RELEASE/spring-core-3.1.0.RELEASE-sources. jar! /org/springframework/util/ClassUtils.java? format = ok) – Patrick
@Patrick: lamentablemente, tu enlace se ha roto también. Sin embargo, Spring framework ya está disponible en GitHub. https://github.com/spring-projects/spring-framework/blob/master/spring-core/src/main/java/org/springframework/util/ClassUtils.java –