草庐IT

反射面

全部标签

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

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

java - 带反射的 TypeLiteral 注入(inject)

上下文:java使用guice(最新版本)大家好,是否可以通过这种方式向Guice注入(inject)一些TypeLiteral:publicMyClassgetMyClass(Injectorinjector,Classa,Classb){//howtoInjectMyClasswithtypea&b?//e.g:injector.getInstance(MyClass)}publicinterfaceMyClass{publicTdo(Ss);}publicclassClassOneimplementsMyClass{publicIntegerdo(Strings){//dosom

java - 为什么我的反射加载奇怪的类?

我正在尝试使用反射来查看我是否可以输入类名并且我的应用程序将加载该类并创建它的一个实例。经过几次尝试后,我发现我不能只在Class.forName()中粘贴一个没有包名的类名,所以我最终尝试获取已加载的所有可用包的列表并尝试用每个包名称加载我输入的类,直到成功为止。这是我目前所得到的:BufferedReaderconsole=newBufferedReader(newInputStreamReader(System.in));Strings="";do{ClassLoaderclsldr=ClassLoader.getSystemClassLoader();Package[]pkgs

java - 如何在 Java 中通过反射调用代理(Spring AOP)上的方法?

接口(interface):publicinterfaceManager{Objectread(Longid);}实现此接口(interface)的类:@TransactionalPublicclassManagerImplimplementsManager{@OverridepublicObjectread(Longid){//Implementationhere}}ManagerImpl的一个方面:@AspectpublicclassInterceptor{@Pointcut("execution(public*manager.impl.*.*(..))")publicvoidex

java - 通过反射 API 使 Java 类成为非最终类

我有一个类似于下面的Java类:publicfinalclassNode{publicNode(){}}我已经学会了如何通过反射API更改“最终”字段的可访问性,但这是否也适用于类?我可以在运行时将最终类转换为非最终类吗? 最佳答案 您可以使用ASM等库重写类文件。在运行时更改类的final状态可能没有意义,因为它在编译时需要是非最终的才能编译子类。 关于java-通过反射API使Java类成为非最终类,我们在StackOverflow上找到一个类似的问题:

java - 使用内部类来反射(reflect)真实事物的关系

这更像是一个概念性问题。我知道如何做我想做的事。不过,我想知道这样做是否正确。我试图表现一些在现实生活中涉及一些嵌套的东西。它是一个文档,指定要使用一组项目执行的Activity。一个文档可能涵盖多个项目,每个项目可能有多个Activity。因此层次结构将是文档->项目->Activity。我目前的想法是表示这将是一个顶级类Document,它包含一个内部类ItemProgram,它本身包含一个内部类Activity。是的,这是两层嵌套。publicclassDocument{//PropertiesofthedocumentitselfprivateMapitemPrograms;/

java - 以编程方式指定 Java 类文字(无需硬编码)?反射?

问题:行内Objecto=myC.getConstructor(short.class).newInstance(myC.cast(pPrim));有没有办法避免硬编码“short.class”,而是从pPrim获取文字?我从Createnewobjectusingreflection?中的答案中得到使用“short.class”的想法我不应该使用“To=...(例如,对于Byte或Short)而不是Objecto=...?我认为我的方法与ClassLiteralsasRuntime-TypeTokens末尾的方法几乎相同.我想做的是反射(reflection)吗?背景:我正在学习Fi

java - 静态语言和反射

据我所知,反射是在运行时创建/修改源代码的能力。来自维基百科:发现和修改源代码结构(例如代码块,类、方法、协议(protocol)等)作为第一类对象运行。转换与类或函数的符号名称匹配的字符串引用或调用该类或函数。评估一个字符串,就好像它是运行时的源代码语句一样。为该语言的字节码创建一个新的解释器,以提供一个新的编程结构的意义或目的。动态语言是我们可以在运行时求值(直接从字符串求值)的语言。来自维基百科:“程序的扩展,通过添加新代码,通过扩展对象和定义,或者通过修改类型系统”好的,现在我的问题是:静态语言(没有eval能力)如何有反射(例如Java)?(新的源代码不求值?:/)提前致谢!

java - 无法通过反射 hibernate 获取字段值

我在jpa中更新对象时遇到问题我有bean用户publicclassUser{@Id@GeneratedValue(strategy=GenerationType.IDENTITY)@Column(name="id",unique=true,nullable=false)privateLongid;@Column(name="name",nullable=false)privateStringname;@OneToMany(fetch=FetchType.EAGER)@JoinColumn(name="fk_program_rating")privateListratingList=n

Java 反射与代码生成

今天我想知道为什么像`Hibernate这样的框架在编译/应用程序启动期间使用反射而不是代码生成(例如使用像BCEL或ASM这样的库)。是否由于历史原因(编写Hibernate时没有这样的库可以动态生成字节码)现在每个人都使用这种方法?我认为使用生成代码的方法会比使用反射的方法更快。 最佳答案 是的,Hibernate可能会从代码生成中受益,尽管利润可能没有您想象的那么大。首先,Reflection在底层使用字节码生成,而且速度并不太慢。您不能仅使用字节码生成来做某些事情。例如。反射允许您访问私有(private)字段并调用私有(p