草庐IT

Reflection

全部标签

java - 按照它们在源代码中出现的顺序获取声明的方法

情况似乎不正常,但我被要求构建序列化程序,通过连接“get”方法的结果将对象解析为字符串。这些值的出现顺序应与其在源代码文件中声明的“get”等价物的顺序相同。例如,我们有ClasstestBean1{publicStringgetValue1(){return"value1";}publicStringgetValue2(){return"value2";}}结果应该是:"value1-value2"不是"value2-value1"根据文档,它不能用Class对象来完成。但是我想知道我是否可以在“*.class”文件中找到这些信息,或者它丢失了吗?如果存在此类数据,也许有人知道为此

Java 解包参数列表

这是另一个问题“我将如何在Java中执行此操作?”在Python中,我可以使用“*”符号来解压参数,如下所示:>>>range(3,6)#normalcallwithseparatearguments[3,4,5]>>>args=[3,6]>>>range(*args)#callwithargumentsunpackedfromalist[3,4,5]Java支持使用...args语法获取args列表,但是有没有办法(也许使用Reflection库?)为其他函数解压这些参数? 最佳答案 publicvoidprintStrings(

java - Java 中通用方法参数的 getClass()

以下Java方法编译失败:voidfoo(Tt){Classklass=t.getClass();}收到的错误是:类型不匹配:无法从Class转换至Class谁能解释为什么Class无效,但是Class还好吗?Javadoc说:TheactualresulttypeisClasswhere|X|istheerasureofthestatictypeoftheexpressiononwhichgetClassiscalled.Forexample,nocastisrequiredinthiscodefragment:Numbern=0;Classc=n.getClass();

Java 数组窄转换规则

根据JLS7,5.1.6NarrowingReferenceConversion•FromanyarraytypeSC[]toanyarraytypeTC[],providedthatSCandTCarereferencetypesandthereisanarrowingreferenceconversionfromSCtoTC.Object[]objArr={"a","b","c"};String[]strArr=(String[])objArr;//ClassCastException在上面的例子中,objArr和strArr都是引用类型,并且存在从Object到String的窄引

带有子类参数的Java getMethod

我正在编写一个使用反射来动态查找和调用方法的库。只给定一个对象、一个方法名称和一个参数列表,我需要调用给定的方法,就好像该方法调用已明确写入代码中一样。我一直在使用以下方法,在大多数情况下都有效:staticvoidcallMethod(Objectreceiver,StringmethodName,Object[]params){Class[]paramTypes=newClass[params.length];for(inti=0;i但是,当参数之一是该方法支持的类型之一的子类时,反射API会抛出NoSuchMethodException。例如,如果接收器的类定义了testMeth

java - 为什么 reflections.getSubTypesOf(Object.class) 找不到枚举?

如果我有Reflectionsreflections=newReflections("my.package",classLoader,newSubTypesScanner(false));然后这会找到我的枚举类Set>enums=reflections.getSubTypesOf(Enum.class);但这不是Set>classes=reflections.getSubTypesOf(Object.class);这有什么原因吗?可重现的例子:packagecupawntae;importorg.reflections.Reflections;importorg.reflections

Java 安全管理器完全禁用反射

我已经在Stackoverflow上阅读了很多关于这个问题的问题,但无法停止为我的问题找到解决方案或答案。如果已经有一个,如果有人能给出提示,我将不胜感激......我的问题/问题是是否可以完全禁用不可信代码的反射?类似getDeclaredMethods()的函数(参见test.java)。我已经有了一个Java安全管理器,如果代码尝试写入/读取/等,它会抛出安全异常。...如果可能的话,有人可以告诉我怎么做吗?布鲁诺测试.javaTestClasscls=newTestClass();Classc=cls.getClass();//returnsthearrayofMethodob

java - 将 Singleton 对象作为枚举元素的 Scala 枚举以及迭代它们的可能性?

我已经看过ScalaquestionaboutemulatingJava'senum和caseclassesvs.Enumeration但这似乎付出了太多的努力却获得了太少的yield。基本上,我希望有一个values方法返回DayOfWeek的所有单例对象,而无需重复我自己几次。我的代码应该是这样的:objectDayOfWeekextendsMyEnum{objectMONDAYextendsDayOfWeek(1)objectTUESDAYextendsDayOfWeek(2)objectWEDNESDAYextendsDayOfWeek(3)objectTHURSDAYexte

java - 对具有原始数字返回类型的方法的反射(reflection)

我目前正在开发一个小型框架来收集OSGi系统中的指标。它的核心是一个注解@Metric,它指示服务的给定方法可以在被询问时提供一个指标(例如数值)。这些方法看起来像:@MetricpublicintgetQueueSize(){...}或@MetricpublicdoublegetAvgTaskTime(){...}我正在使用反射检查服务实现类并注册用@Metric注释的方法.作为完整性检查,我正在检查该方法是否确实提供了一个数值。我试过这个但失败了:for(Methodmethod:metricSource.getClass().getMethods()){if(method.isA

java - 是否可以使用反射遍历包内的所有类?

这个问题在这里已经有了答案:Canyoufindallclassesinapackageusingreflection?(30个答案)关闭7年前。我有一个具有某些值的字符串。我想遍历调用特定方法的包中的所有类,如果该方法返回的值等于我的字符串中的值,则创建该类的对象。我想以动态方式执行此操作,因此如果我在此包中添加一个类,它将自动进入迭代。这有可能吗?如果没有,有办法做我想做的事吗?我在期待类似的东西。for(Classclazz:SomeClass.listClasses("org.package")){//codehere}