草庐IT

Reflection

全部标签

java - 确定静态方法是否是纯函数式的

给定一个java.lang.reflect.Method对象,是否可以确定该方法是否是纯函数式的(即,给定相同的输入,它总是会产生相同的输出,并且它是无状态。换句话说,该功能不依赖于它的环境)? 最佳答案 不,没有办法。反射不允许您检查方法背后的实际代码。即使在可能的情况下,实际分析也可能......至少可以说是棘手的。 关于java-确定静态方法是否是纯函数式的,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

Java Class.isAssignableFrom 困惑

我发现原始类型问题System.out.println("Integer.class.isAssignableFrom(int.class)="+Integer.class.isAssignableFrom(int.class));System.out.println("int.class.isAssignableFrom(Integer.class)="+int.class.isAssignableFrom(Integer.class));这两个语句都向调用者返回false。所以拳击似乎不适用于这里。我的问题是我的观察是否正确,或者是否有其他API可以正确地进行此测试?-------

java - 如何使用反射调用java中的方法

如何使用反射调用带参数的方法?我想指定那些参数的值。 最佳答案 下面是一个使用涉及基元的反射调用方法的简单示例。importjava.lang.reflect.*;publicclassReflectionExample{publicinttest(inti){returni+1;}publicstaticvoidmain(Stringargs[])throwsException{MethodtestMethod=ReflectionExample.class.getMethod("test",int.class);intresul

java - 为什么不能从枚举构造函数调用 super 构造函数?

publicenumA{A(1);privateA(inti){}privateA(){super();//compile-error//CannotinvokesuperconstructorfromenumconstructorA()}}这里是enumA的层次结构extendsfromabstractjava.lang.Enumextendsjava.lang.ObjectClassc=Class.forName("/*path*/.A");System.out.println(c.getSuperclass().getName());System.out.println(Modi

java - 从类对象指定java中的泛型类型

为什么这是错误的:Classtype=Integer.class;ArrayList=newArrayList();?有没有办法在给定类对象的情况下实例化特定类型的类?显然我永远不会直接这样做,这只是一个说明需要什么的例子。在我需要的实际代码中,我不知道类型的名称。例如publicvoidcreateAList(Classtype){ArrayListtoReturn=newArrayList();returntoReturn;} 最佳答案 ArrayListcreateAList(Classtype){ArrayListtoRet

java - 如何在运行时获取 JUnit 4 中的测试用例名称?

这个问题在这里已经有了答案:GetnameofcurrentlyexecutingtestinJUnit4(16个答案)关闭9年前。我想在执行JUnit测试时进行一些日志记录。在JUnit3.x中,总是很容易获得当前运行的测试用例的名称,无论测试用例是如何实例化的:publicvoidtestFoo()throwsException(){StringtestName=this.getName();//[...]dosomestuff}在JUnit4中,事情似乎并不那么容易。有谁知道这个的解决方案?是否有任何选项可以反射(reflect)到当前的Runner实例中?

java - 如何在java中创建合成字段?

如何在Java中创建合成字段?java中的合成字段只能在运行时创建吗?如果不是:在编译时是否有符合标准的方法(不更改类文件中的某些字节) 最佳答案 当语言的“怪癖”需要它们时,它们由编译器创建。一个简单的例子是使用内部类:publicclassTest{classInner{}}Test.Inner类将有一个合成字段来表示Test类的适当实例。我们可以稍微扩展此代码以显示该字段:importjava.lang.reflect.*;publicclassTest{publicstaticvoidmain(String[]args){f

java - 在运行时使用反射实例化未知类对象的正确方法是什么?

我正在开发一个配置加载器类,这样我就可以通过外部文本文件(config.txt)更改我的程序的参数,而不必在每次更改时都重新编译我的代码。有人建议我使用Java的反射来执行此操作,但我对如何实际实现它感到有点困惑。我已经能够从我的文本文件中成功提取类名及其构造函数的参数,但我如何从中提取实例化对象?到目前为止,这是我的方法:publicvoidloadObject(StringclassString,HashMaphm){StringclassName=props.getProperty(classString);Classc=Class.forName(className);}cla

Java 反射 : How to get methods with no parameters only

我正在做一项关于Java反射的学校作业。详情如下:Writeaconsoleprogramthataskstheuserforaclassname,loadsthatclassandcreatesaninstanceofit.Weassumethattheclasshasaconstructorwithoutanyparameters.Then,theprogramprintsoutthenamesandvaluesofthepublicvariablesofthecreatedobject,andalsoalistofthepublicmethodsthatdonotspecifya

java - 如果一个类是最终的,我如何判断使用反射

假设我有一个类:公共(public)最终类Foo和引用该类的反射Classclz引用。我怎么知道(使用clz)Foo是final? 最佳答案 使用Class#getModifiers:Modifier.isFinal(clz.getModifiers())类(或字段或方法)的修饰符在反射API中表示为压缩位int。每个可能的修饰符都有自己的位掩码,Modifier类有助于屏蔽掉这些位。您可以检查以下修饰符:摘要最终接口(interface)原生私有(private)protected公共(public)静态strictfp同步tra