Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在不使用魔术字符串的情况下获得方法名_Java - Fatal编程技术网

Java 如何在不使用魔术字符串的情况下获得方法名

Java 如何在不使用魔术字符串的情况下获得方法名,java,Java,在java中,是否有任何库可以在不使用任何魔术字符串的情况下获取字段名,例如,对于下面的类 class User { int id; int getId() { return id; } void setId(int id) { this.id = id; } } 现在我想要的是这样的东西 String fieldName = Utility.getFieldName(User.getId()); 这应该返回文本“id” 我知道通常的方法无法实现这一点,但我在想,是否可以通过使用动态代理

在java中,是否有任何库可以在不使用任何魔术字符串的情况下获取字段名,例如,对于下面的类

class User
{
int id;

int getId()
{
return id;
}

void setId(int id)
{
this.id = id;
}
}
现在我想要的是这样的东西

String fieldName = Utility.getFieldName(User.getId());
这应该返回文本“id”

我知道通常的方法无法实现这一点,但我在想,是否可以通过使用动态代理包装用户类来实现这一点(所以这更像

String fieldName = Utility.getFieldName(Utility.createProxy<User>().getId());
String fieldName=Utility.getFieldName(Utility.createProxy().getId());

)截取方法调用并从堆栈中获取方法名称,并使用一些线程连接,在查看实用程序类时将其视为简单的方法调用。有人知道是否有任何库可以执行这种类型的操作吗?

这可以通过使用来完成。

但是它会使用魔法字符串,这是我需要去掉的字符串。是的,但是当调用
User.getId()
时,您会得到一个int作为返回值,而不是字段。是的,这就是为什么我想知道是否有必要通过创建一个动态代理来截取方法并使用调用堆栈获取方法名。