Articles of reflection

Proguard y reflection en Android

Acabo de usar Proguard, pero las clases que bash crear a través de la reflexión no funcionan. Tengo una interfaz Algorithm Paso clases como esta AlgorithmFactory.SomeClassThatExtendsAlgorithmImpl.class La clase está instanciada así public ArrayList getAlgorithms(Context cnx) { ArrayList list = new ArrayList(); for(Class alg: algorithms) { try { Constructor c = alg.getConstructor(Context.class); list.add(c.newInstance(cnx)); } catch (IllegalArgumentException […]

Cómo resolver InaccessibleObjectException (“No se puede hacer que {member} esté accesible: el módulo {A} no abre ‘{package}’ to {B}”) en Java 9?

Esta excepción se produce en una amplia variedad de escenarios cuando se ejecuta una aplicación en Java 9. Algunas bibliotecas y frameworks (Spring, Hibernate, JAXB) son particularmente propensas a esto. Aquí hay un ejemplo de Javassist: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain) throws java.lang.ClassFormatError accessible: module java.base does not “opens java.lang” to unnamed […]

Cómo subir evento PropertyChanged sin usar el nombre de cadena

Sería bueno tener la capacidad de generar el evento ‘PropertyChanged’ sin especificar explícitamente el nombre de la propiedad modificada. Me gustaría hacer algo como esto: public string MyString { get { return _myString; } set { ChangePropertyAndNotify(val=>_myString=val, value); } } private void ChangePropertyAndNotify(Action setter, T value) { setter(value); PropertyChangedEventHandler handler = PropertyChanged; if (handler != […]

Quiero obtener el tipo de variable en tiempo de ejecución

Quiero obtener el tipo de variable en tiempo de ejecución. ¿Cómo hago esto?

Imprimir información de depuración sobre errores con java 8 expresiones lambda

Quiero usar un método estático como setter helper que capture excepciones e imprima información de depuración sobre la operación que falló. No quiero los detalles de la excepción solamente. Quiero mostrar qué propiedad se está configurando para que los detalles ayuden a solucionar el problema rápidamente. Estoy trabajando con Java 8. ¿Cómo debo proporcionar o […]

¿Usar el reflection para cambiar el final estático File.separatorChar para la prueba unitaria?

Específicamente, estoy intentando crear una prueba unitaria para un método que requiere que use File.separatorChar para construir rutas en Windows y Unix. El código debe ejecutarse en ambas plataformas, y aun así obtengo errores con JUnit cuando bash cambiar este campo final estático. Alguien tiene alguna idea de lo que está pasando? Field field = […]

¿Hay algo como instanceOf (Class C) en Java?

Quiero comprobar si un objeto o es una instancia de la clase C o de una subclase de C Por ejemplo, si p es de clase Point , quiero que x.instanceOf(Point.class) sea true y también que x.instanceOf(Object.class) sea true . Quiero que funcione también para los tipos primitivos en caja. Por ejemplo, si x es […]

¿Cuál es el riesgo de seguridad de la reflexión de objetos?

Así que después de unas horas de solución a la limitación de Reflection que actualmente está inhabilitada en Google App Engine, me preguntaba si alguien podría ayudarme a entender por qué la reflexión de objetos puede ser una amenaza. ¿Es porque puedo inspeccionar las variables privadas de una clase o hay otras razones más profundas?

Obtener el nombre de la cadena de la propiedad usando la reflexión

Hay una gran cantidad de ejemplos de reflexión que le permiten obtener: 1. Todas las propiedades en una clase 2. Una sola propiedad, siempre que conozca el nombre de la cadena ¿Hay alguna forma (utilizando reflexión, TypeDescriptor u otro) para obtener el nombre de cadena de una propiedad en una clase en tiempo de ejecución, […]

Volcar las propiedades de un objeto java

¿Hay una biblioteca que volcará / imprimirá recursivamente las propiedades de un objeto? Estoy buscando algo similar a la función console.dir () en Firebug. Soy consciente del common-lang ReflectionToStringBuilder pero no se repite en un objeto. Es decir, si ejecuto lo siguiente: public class ToString { public static void main(String [] args) { System.out.println(ReflectionToStringBuilder.toString(new Outer(), […]