这个问题在这里已经有了答案:Gettingthenameofthecurrentlyexecutingmethod(23个回答)关闭5年前。我知道您可以在Java中使用反射在运行时获取类的名称、方法、字段等。我想知道一个方法在它内部是自己的时候能找出它自己的名字吗?另外,我也不想将方法名称作为字符串参数传递。例如publicvoidHelloMyNameIs(){StringthisMethodNameIS=//Dosomething,sothevariableequalsthemethodnameHelloMyNameIs.}如果可能的话,我想它可能会涉及到使用反射,但也许不会。如果
我有以下问题:我有一个类,试图使用反射来调用其OWN保护方法之一,但出现异常:java.lang.IllegalAccessException:访问方法被拒绝有人可以阐明这一点吗?基类:publicabstractclassBaseReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){//invokethecorrecteventmethod:Methodmethod;try{method=this.getClass().getDeclaredMethod("
如果我有一个带有参数化泛型的构造函数的类:publicclassFoo{publicFoo(Mapdata){...}}...如果我想调用,我该如何引用参数化Map的类:Constructorconstructor=cls.getConstructor(/*theMapclass!*/)(其中cls是Foo类。)我想做这样的事情:Constructorconstructor=cls.getConstructor(Map.class);...但这行不通。我相信对此有一个简单的答案! 最佳答案 在运行时,这:Map其实就是一个Map,没
我有一个接口(interface),它带有一个具有通用返回类型的方法,并且在运行时有一些间接实现该接口(interface)的类实例。现在我想找出每个使用反射的实现的实际返回类型。(我的想法是利用这种机制,使用接口(interface)来定义一个策略,并在运行时从一组策略实现中找到一个匹配的策略(特定的返回类型),而不必引入冗余的辅助方法公开类型)。更具体地说,让我们考虑以下场景:privateinterfaceDAO{publicEgetById(Iid);}privateabstractclassAbstractDAOimplementsDAO{@OverridepublicTge
例如classtester{@TestpublicvoidtestBeanUtils()throwsInvocationTargetException,IllegalAccessException,NoSuchMethodException{Strangerstranger=newStranger();BeanUtils.setProperty(stranger,"name","wener");BeanUtils.setProperty(stranger,"xname","xwener");BeanUtils.setProperty(stranger,"yname","ywener")
我的Web应用程序中有大量Javabean类,我正试图找到一种简单的方法来在这些bean中实现toString()方法。toString()方法将用于记录整个应用程序,并且应该打印bean中所有属性的属性值对。我正在尝试两种选择:1.BeanUtils.describe()(Apachecommons-beanutils)2.ReflectionToStringBuilder.toString()(Apache通用语言)由于这是一个预期具有高流量的Web应用程序,因此实现必须是轻量级的,并且不应影响性能。(内存使用、处理器使用等是主要考虑因素)。我想知道根据上述标准,其中哪些表现更好。
这个问题在这里已经有了答案:Getgenerictypeofclassatruntime(30个答案)关闭3年前。我有一个参数化类:classParameterizedClass{}调用:newParameterizedClass();那么如何使用Java泛型获得T的实际类型?
简而言之,我正在尝试执行“classObject.getDeclaredClasses()”的逆运算。我有一个方法接收Class类型的对象.我想弄清楚它是否是一个内部类,如果是,我想访问周围类的对象实例。是否有用于此的智能API,或者我是否被迫进行一些字符串操作和解析? 最佳答案 您正在寻找Class.getDeclaringClass()方法:publicClassgetDeclaringClass()IftheclassorinterfacerepresentedbythisClassobjectisamemberofanoth
publicEdecode(java.lang.reflect.Fieldfield,intordinal){//TODO}假设field.getType().isEnum()为true,我将如何生成给定序数的枚举值? 最佳答案 field.getType().getEnumConstants()[ordinal]足够了。一条线;足够简单。 关于java-从枚举类型和序号中获取枚举值,我们在StackOverflow上找到一个类似的问题: https://st
我们可以通过3种方法获取类Class对象:MyClass.classobj.getClassClass.forName("类名")我不明白:MyClass.class和Class.forName("className")之间的区别。因为两者都需要类名。 最佳答案 Class.forName("className");forName是类“Class”的静态方法。我们需要提供所需类的完全限定名称。这可以在类名在运行时已知时使用。ClassName.class;.class不是方法,它是关键字,可以与int这样的原始类型一起使用。当事先知