草庐IT

Reflection

全部标签

java - 遍历所有 JDK 类

我正在制作一个代码编辑器,并且正在处理自动完成功能。我想以编程方式获取JDK附带的所有类的列表。示例包括:java.io.Filejava.util.ArrayListjavax.swing.Action我找到了获取特定包类的方法。例如,我可以获得所有以com.mypackage.foo开头的类。问题是我正在尝试获取使用BootstrapClassLoader加载的类。在OSXJDK上,该类加载器显示为null。例如,如果我执行String.class.getClassLoader(),则为null。有什么想法吗? 最佳答案 您可以

java - 获取调用者的实例(通过反射)

这个问题在这里已经有了答案:Retrievethecallerinstance(notclass)ofamethodorconstructor(1个回答)关闭7年前。是否有可能以某种方式获取调用类的实例对象?classA{voidfoo(){Objecto=getCaller();//??expectinstanceofBlongval1=..//getval1ofoviareflection//dosomethingwhereval1iscrucial}}classB{doubleval1=Math.random();publicstaticvoidmain(String[]args

java - 如何在运行时删除 Java 注解(可能使用反射)?

我们正在构建一个工具(供内部使用),只有在从我们的源代码中删除javax.persistence.GeneratedValue注释时它才能工作(我们在工具中设置Id,由于GeneratedValue注释而被拒绝)。..但对于正常操作,我们需要此注释。如何在运行时删除Java注解(可能使用反射)?这是我的课:@EntitypublicclassPersistentClass{@Id@GeneratedValue(strategy=GenerationType.AUTO)privatelongid;//...Otherdata}这是我希望能够在运行时将其更改为:@Entitypublicc

java - JVM - 在正在运行的(非检测的) session 中获取类的实例

我需要通过在给定类的实例上调用特定方法来停止进程。这个进程已经运行了一天,如果我硬关闭它,我会失去很多工作。由于API中的一个错误,GUI连接错误并且没有调用正确的停止函数。我附加了一个交互式Java(Scala)解释器,所以如果我能掌握流程的实例,我就可以轻松调用正确的方法。我不在调试session中,没有com.sun.jdi。我可以在堆栈跟踪转储中看到该实例,但StackTraceElement不包含实际实例,仅包含类和行号。在没有特定检测的情况下,在运行的session中是否有任何方法可以通过它的类,通过线程转储来获取该实例? 最佳答案

java - 如何确定使用lambda实现泛型FunctionalInterface的Bean的类型参数?

我有一个通用的功能接口(interface):@FunctionalInterfacepublicinterfaceFeeder{voidfeed(Tt);}还有几个为不同的Animal子类实现该接口(interface)的bean。@ConfigurationpublicclassConfig{@BeanpublicFeederdogFeeder(){returndog->dogService.feedDog(dog);}@BeanpublicFeedercatFeeder(){returncat->catService.feedCat(cat);}}现在,服务类已经被注入(inje

Java:反射(在运行时)与镜像(在注释处理时)

我理解概念之间的一般差异反射(在运行时使用Class,Method,Field,Annotation,...),以及镜像(在注释处理期间使用TypeMirror,TypeElement,...完成)。但是有人可以深入比较这两个概念(或者给我指出一个资源,它是在哪里完成的)吗?例如,哪个概念提供了另一个不提供的信息类型......谢谢。 最佳答案 反射类用于表示运行中的JVM中的对象类。反射是一个非常古老的概念,从一开始就存在于Java中。因此,它在某些领域有点笨拙,已经扩展以适应新的语言结构(尤其是泛型)。javax.lang.mo

java - Scala 2.9 桥接方法

我正在使用Scala2.9.1我已经这样定义了一个Logging特征:traitLogging{defdebug(msg:String,throwables:Throwable*)=........}我有一个JMSPublisher类,它混合了Logging特性:classJMSPublisherextendsPublisherwithLogging{defpublishProducts(list:List[_这一切都编译得很好。我的问题是我有一个用户想要将我的JMSPublisher加载到Spring中。他使用的是Spring2.5.6。在启动期间加载ApplicationConte

java - 在具有运行时保留的对象上找不到注释

好吧,我在这里有点困惑。我正在尝试通过在模型上使用注释来选择“DAO”类:@Entity@Table(name="dispatcher")//usetheKamailioBaseDAOforcodethatsupportsthisannotation@DAOSelector(dao=DAOBaseKamailio.class)publicclassDispatcherSetextendsModel{[...]}注解定义如下:@Target({ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic@in

java - 为泛型分配默认值

我通过反射调用一个方法,它的返回类型是通用的。我不希望返回值为null,所以在这种情况下,我想分配一个该泛型类型的默认值。也就是说,在通过反射调用方法后,我想执行如下操作:TresultNotNull=(T)reflectionMethodThatCanReturnNull.invoke(anObject);//Ifit'snull,let'sassignsomethingassignable.if(resultNotNull==null){if(resultNotNull.getClass().isAssignableFrom(Long.class)){resultNotNull=(

java - 理解 Guava 的 TypeToken.isAssignableFrom 方法

我正在使用GuavaTypeToken类来测试任意类型的实例是否可以分配给其他类型的对象。在下面的代码片段中,我正在测试类型是否声明为List可从List分配,反之亦然:TypeTokenrawListType=newTypeToken(){};TypeTokenparameterizedListType=newTypeToken>(){};System.out.println(rawListType.isAssignableFrom(parameterizedListType));//trueSystem.out.println(parameterizedListType.isAss