草庐IT

Reflection

全部标签

java - 如何为 jar 中的每个类获取 Class 对象

我有一个包含30个左右类的jar文件。我想要的是,在主要方法的开头,我从这个jar中调用一个类,它使用Java的反射功能获取对jar中每个类的Class引用。我的最终目标是执行某种操作,查询为每个类定义的变量。基本上我正在寻找类似的东西。有没有一种简单的方法可以使用标准反射API来做到这一点,或者制作一个可行的解决方案会很麻烦?Listl=Reflection.getAllClasses();Stringvar;foreach(Classc:l){var=c.getField("fieldname");doSomething(var);}编辑:只是说清楚:代码将从检查的jar中执行。

java - 我可以使这个 java pluck() 方法更安全吗?

我写了这个效用函数:publicstaticListpluck(StringfieldName,Listlist)throwsNoSuchFieldException,IllegalAccessException{if(list.isEmpty()){returnnewArrayList();}Classc=list.get(0).getClass();Fieldf=c.getField(fieldName);ArrayListresult=Lists.newArrayList();for(Objectobject:list){result.add((T)f.get(object));

java - 可变参数和空参数

所以,我有一个奇怪的问题。此表达式:method.invoke(target,null)throwsjava.lang.IllegalArgumentException:wrongnumberofarguments问题是这个表达式在hibernate中很深(准确地说是BasicPropertyAccessor$BasicGetter),我想它应该工作正常(直到最近才工作)我在eclipse中调试了这个问题,实际上,如果我(在显示View中)调用method.invoke(target)或method.invoke(target,(Object[])null)一切正常。我确定我的类(cl

java - 转换为具体类并在 Java 中调用方法

假设我们有一个名为A的基类和一些子类(B、C、D等.).大多数子类都有方法do()但基类没有。类AA提供了一个名为getObject()的方法,该方法将创建类型为B或C或D等,但返回类型为A的对象。如果此方法可用,如何将返回的对象转换为具体类型并调用其do()方法?编辑:我不允许更改A类、子类或AA的实现,因为我使用的是封闭的SourceAPI..是的,如您所见,它确实存在一些设计问题。 最佳答案 您可以使用instanceof进行测试并调用do()方法:Aa=aa.getObject();if(ainstanceofB){Bb=(

java - 在运行时检查类是否具有使用泛型的特定构造函数

大家好:)我正在尝试在类中选择正确的构造函数。这是代码:Constructor[]constructors=targetClass.getConstructors();ConstructorgoodConstructor=null;for(Constructorconstructor:constructors){Class[]parameterTypes=constructor.getParameterTypes();if(parameterTypes.length=1&¶meterTypes[0].equals(Map.class)){//heregoodConstructo

java - 如何使用调试日志信息动态生成堆栈帧

为了更好的调试,我经常希望:Exceptionatcom.example.blah.Something.method()atcom.example.blah.Xyz.otherMethod()atcom.example.hello.World.foo()atcom.example.debug.version_3_8_0.debug_info_something.Hah.method()//syntheticmethodatcom.example.x.A.wrappingMethod()如上所示的调试堆栈帧将动态生成,就像java.lang.reflect.Proxy一样。,除了我想完全

java - 如何使用 Javassist 获取原始类型的类?

在我的程序中,我处理类和原始类型。如果程序找到一个类,它只需执行以下调用之一:Class.forName(类名)cc.toClass()其中cc是CtClass的实例但是,如果它找到原始类型,事情就会变得更糟:Class.forName不可用,它不能与原始类型一起使用。cc.toClass()返回null可以从原始类型包装器类调用TYPE字段,但我如何使用反射来调用它?这是我的代码:CtClasscc;//ObtainedfromcallercodeClassclassParam;if(cc.isprimitive()){classParam=??//HowcanIgetTYPEfie

java - java中反射和后期绑定(bind)的区别与实时示例

在学习Java教程的时候,Reflection和LateBinding让我很困惑。在一些教程中,他们写道它们是相同的,并且反射和后期绑定(bind)之间没有任何区别。但是其他教程说有区别。我很困惑,所以有人可以解释一下Java中的反射和后期绑定(bind)是什么,如果可能的话,请给我一些关于两者的真实示例。谢谢.. 最佳答案 Java使用后期绑定(bind)来支持多态性;这意味着应该推迟到运行时才决定应该使用许多方法中的哪一个。以N个类实现接口(interface)(或抽象类,fwiw)的抽象方法为例。publicinterface

java - 使用核心 JAVA 编程 - 反射 API

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Whatisreflection,andwhyisituseful?反射在Java中的具体用途是什么?任何人都可以举例说明吗?如果有任何相关概念,请分享。

java - int.class.isInstance(Object) 是矛盾的吗?

这是一个例子:publicbooleancheck(Classclazz,Objecto){returnclazz.isInstance(o);}check(int.class,7);//returnsfalse自isInstance接受Object,它不适用于int,因为int是原始类型并自动装箱为Integer.那么是否有可能编写一个通用的检查方法?或者我应该确保clazz的类型是Class? 最佳答案 并不是所有的Class对象都代表类/引用类型;还有Class对象表示原始类型。这很有用,因为在对字段和方法使用反射时,您经常需