Tag: reflection

除了使用集成测试运行器在IntelliJ IDEA项目中以“IntegrationTest”结尾的所有JUnitunit testing之外,我该如何运行?

我基本上想要在我的IntelliJ IDEA项目中运行所有JUnit 单元测试(不包括JUnit集成测试),使用JUnit的static suite()方法。 为什么要使用static suite()方法? 因为我可以使用IntelliJ IDEA的JUnit测试运行器在我的应用程序中运行所有unit testing(并通过命名约定轻松排除所有集成测试)。 到目前为止,代码如下所示: package com.acme; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class AllUnitTests extends TestCase { public static Test suite() { List classes = getUnitTestClasses(); return createTestSuite(classes); } private static List getUnitTestClasses() { List classes = new ArrayList(); classes.add(CalculatorTest.class); return classes; […]

Java是否具有“是一种类”的测试方法

我有一个基类, Statement ,其他几个类inheritance,名为IfStatement , WhereStatement等…在if语句中执行测试以确定实例派生的Statement类的最佳方法是什么?

如何确定已加载类的绝对路径(如果有)?

是否有(兼容的,如果可能的话)确定加载类的绝对路径的方法? 当然,这并不总是可行的(如果你想到动态创建的类),但如果加载的Class在jar中,如何获取这个jar的绝对路径?

Java使用reflection调用类的main()方法

我需要使用reflection从另一个主方法调用Java类的main方法。 必须使用reflection才能删除被调用的主类的编译时依赖性。 直接的方法不会产生,因为它只识别“公共”和“非静态”方法。 建议?

reflection性地获取匹配特定URL的Spring MVC控制器列表

如何reflection获取所有控制器的列表(最好,如果不仅注释,但也在xml中指定),匹配Spring MVC应用程序中的一些特定URL? 在仅注释的情况下, @Autowired private ListableBeanFactory listableBeanFactory; … whatever() { Map beans = listableBeanFactory.getBeansWithAnnotation(RequestMapping.class); // iterate beans and compare RequestMapping.value() annotation parameters // to produce list of matching controllers } 可以使用,但在更一般的情况下,当在spring.xml配置中指定控制器时,该怎么办? 以及如何处理请求路径参数?

Java:获取类的属性以构造字符串表示

假设我有一个这样的类(并且还假设所有私有变量: public class Item { private String _id = null; private String _name = null; private String _description = null; … } 现在,如果我想构建这个类的toString()表示,我会在Item类中做这样的事情: @Override public String toString() { return (_id + ” ” + _name + ” ” + _description); } 但是如果我在课堂上说15个私有变量呢? 我是否必须像这样写出每个变量的名称? 理想情况下,我想通过遍历此类的私有变量列表并构造字符串表示来完成任务: @Override public String toString() { ArrayList members = getClass().getMembers(); //Some method […]

我如何使用getConstructor(params).newInstance(args)?

这可能是一个愚蠢的问题,但我是Java的新手,所以…… 我目前有一些代码,目前正在使用clazz.asSubclass(asSubclassOfClass).getConstructor().newInstance() 我需要将一些参数传递给contructort,所以我想将其更改为: clazz.asSubclass(asSubclassOfClass).getConstructor(params).newInstance(args) 我不明白的是我需要传递的是params以及我需要传递给args的东西 。 假设我想传入一个字符串“你好”和一些名为XyzObj的XYZ类型的对象。我该如何指定? 我会以params的forms通过什么,以及作为args传递给我的是什么?

sun.reflect.CallerSensitive注释是什么意思?

@CallerSensitive注释在上面的方法中隐含了什么? 例如,注释存在于Class的getClassLoader方法中 @CallerSensitive public ClassLoader getClassLoader() { // }

检查注释是否属于特定类型

我正在使用reflection来查看附加到类的属性的注释是否是特定类型。 目前我在做: if(“javax.validation.Valid”.equals(annotation.annotationType().getName())) { … } 这让我觉得有点笨拙,因为它依赖于一个完全限定的类名字符串。 如果命名空间将来发生更改,则可能会导致细微错误。 我想要做: if(Class.forName(annotation.annotationType().getName()).isInstance( new javax.validation.Valid() )) { … } 但是javax.validation.Valid是一个抽象类,无法实例化。 有没有办法模拟针对接口或抽象类的instanceof (或基本上使用isInstance )?

Java反思:“java.lang.NoSuchMethodException”

我试图从另一个类使用reflection获取方法,但由于某种原因,它继续给我一个没有这样的方法exception。 这些是我使用的类: ScriptTable类: for(Class script: Scripts) { System.out.println(script.getName()); try { Method c = script.getMethod(“scriptInfo()”, script); } catch(Exception e) { e.printStackTrace(); } } DummyScript类 public String[] scriptInfo() { String[] ScriptInfo = {“DummyScript”, “Chris”, “Does nothing atm”}; return ScriptInfo; }