Tag: reflection

在运行时确定generics方法参数的类型

鉴于具有以下结构的类。 我试图确定generics方法的调用者分配的参数T的类型。 public class MyClass{ public Boolean IsSupportable() { Class typeOfT; // Need to determine Class for generic parameter T // Business Logic goes here return true; } } 在C#中,我会使用“default(T)”或“typeof(T)”,但我试图在Java中这样做。 有谁知道我是怎么做的? 我真的不需要实例,我只需要Class定义。

将给定类(例如,java.lang.Object)转换为字节数组。 可能吗?

假定类加载器接受将给定类的字节数组作为输入,返回一个Class ,我想知道是否可以执行相反的操作,即传递一个Class并获取其字节数组? 请记住,我不是在谈论序列化!

从枚举类型和序数中获取枚举值

public E decode(java.lang.reflect.Field field, int ordinal) { // TODO } 假设field.getType().isEnum()为true ,我将如何生成给定序数的枚举值?

迭代java中的静态int值

我有一个简单的问题。 有没有办法(使用我想的reflection)来迭代一个类的所有静态值? 例如 class Any { static int one = 1; static int two = 2; static int three = 3; public static void main( String [] args ) { for( int i : magicMethod( Any.class ) ){ System.out.println( i ); } } } 产量 1 2 3 谢谢。

使用java.lang.invoke.MethodHandle调用私有方法

如何使用方法句柄调用私有方法? 据我所知,只有两种可公开访问的Lookup实例: MethodHandles.lookup() MethodHandles.publicLookup() 并且都不允许不受限制的私人访问。 有非公开的Lookup.IMPL_LOOKUP我的需求。 是否有一些公共方法来获取它(假设SecurityManager允许它)?

使用reflection解压缩数组

我正在尝试解压缩从reflection对象字段获得的数组。 我将常规字段的值设置为Object。 如果它是一个数组,那么我想将我的一般对象转换为一个数组(无论它的类型)并提取其内容 fields[i].setAccessible(true); String key = fields[i].getName(); Object value = fields[i].get(obj); if (value.getClass().isArray()){ unpackArray(value); } 在我的unpackArray方法中,我尝试将Object Value转换为java.util.Arrays,java.reflect.Array和Array [],但每次都不让我。 有没有办法将我的Object转换为通用数组? 非常感谢Sam

如何从动态代理中解包原始对象

解包动态代理以检索下面的原始对象的最佳方法是什么? 使用java.lang.reflect.Proxy.newProxyInstance()创建了动态代理 谢谢。

我可以打印出变量的名称吗?

我创造了一个号码。 常量变量超过1000,这些常量是唯一的整数。 public static final FOO 335343 public static final BAR 234234 public static final BEZ 122424 …. …. …. 有没有办法打印出FOO,BAR和BEZ,这是Java中名称的变量? 我不熟悉javareflection。 我不知道这是否有帮助。 if ( FOO == 335343) —> output “FOO” if ( BAR == 234234 ) —> ouptut “BAR” …. 实际上问这个问题是我想写入登录文件 说 System.out.println(“This time the output is ” + FOO); 而实际的输出是 This time the […]

。this.getClass()getFields()的长度。; 总是返回0

我试图获取特定类中的字段数。 但是,我使用的技术不起作用,并始终返回0: this.getClass().getFields().length; 如何获取特定class级的字段数?

java.lang.reflect.Array的性能

由于我在项目中大量使用对数组的reflection访问,因此我决定比较array[index]与java.lang.reflect.Array.get(array, index) 。 虽然我预计,reflection调用会慢得多,但我惊讶地发现它们的速度要慢10-16倍。 所以我决定编写一个与Array#get大致相同的简单实用程序方法,但是通过强制转换对象而不是使用本机方法接收给定索引处的数组(就像Array#get ): public static Object get(Object array, int index){ Class c = array.getClass(); if (int[].class == c) { return ((int[])array)[index]; } else if (float[].class == c) { return ((float[])array)[index]; } else if (boolean[].class == c) { return ((boolean[])array)[index]; } else if (char[].class == c) { return ((char[])array)[index]; } else if (double[].class […]