草庐IT

Reflection

全部标签

java - JVM 什么时候加载类?

假设我有以下类(class):classCaller{publicvoidcreateSomething(){newSomething();}}将执行此行:staticvoidmain(){Classclazz=Caller.class;}导致JVM加载类Something还是类加载延迟到方法createSomething()被调用? 最佳答案 仅当您需要有关该类的信息时才加载该类。publicclassSomethingCaller{publicstaticSomethingsomething=null;//(1)doesnotc

java - 关于 MethodHandle API 的一些基本问题

如何通过MethodHandles.lookup()获取所有声明的方法?如何获取所有声明的字段?MethodHandle.invoke()、MethodHandle.invokeExact()和MethodHandle.invokeWithArguments()有什么区别另外,我将不胜感激为Java开发人员使用MethodHandleAPI的教程。我强调,我是在静态类型语言纯旧Java上编程,我不是JVM开发人员,特别是我对整个字节码废话(invokedynamic)不感兴趣。我想弄清楚如何使用这个新API而不是JavaCoreAPI。EDITED-2:@GlenBest下面提供了一些

java - 关于 MethodHandle API 的一些基本问题

如何通过MethodHandles.lookup()获取所有声明的方法?如何获取所有声明的字段?MethodHandle.invoke()、MethodHandle.invokeExact()和MethodHandle.invokeWithArguments()有什么区别另外,我将不胜感激为Java开发人员使用MethodHandleAPI的教程。我强调,我是在静态类型语言纯旧Java上编程,我不是JVM开发人员,特别是我对整个字节码废话(invokedynamic)不感兴趣。我想弄清楚如何使用这个新API而不是JavaCoreAPI。EDITED-2:@GlenBest下面提供了一些

java - 当您没有类的源代码时,如何在 Java 中打印对象的值?

这个问题在这里已经有了答案:Printingallvariablesvaluefromaclass(9个回答)关闭6年前.publicclassMyClass{ClassABCabc=newClassABC();}我只有一个ClassABC的.class文件。我想打印“abc”对象的所有公共(public)、私有(private)、protected和默认字段值。如何使用反射来做到这一点? 最佳答案 您可以通过Class#getDeclaredFields()获取所有字段.每个返回一个Field您又可以使用get()的对象获取值的方

java - 当您没有类的源代码时,如何在 Java 中打印对象的值?

这个问题在这里已经有了答案:Printingallvariablesvaluefromaclass(9个回答)关闭6年前.publicclassMyClass{ClassABCabc=newClassABC();}我只有一个ClassABC的.class文件。我想打印“abc”对象的所有公共(public)、私有(private)、protected和默认字段值。如何使用反射来做到这一点? 最佳答案 您可以通过Class#getDeclaredFields()获取所有字段.每个返回一个Field您又可以使用get()的对象获取值的方

java - 如何通过反射从 Java 字段中获取字符串值?

我有一个方法:publicvoidextractStringFromField(ClassclassToInspect){Field[]allFields=classToInspect.getDeclaredFields();for(Fieldfield:allFields){if(field.getType().isAssignableFrom(String.class)){System.out.println("Fieldname:"+field.getName());//Howtogettheactualvalueofthestring?!?!//StringstrValue=?

java - 如何通过反射从 Java 字段中获取字符串值?

我有一个方法:publicvoidextractStringFromField(ClassclassToInspect){Field[]allFields=classToInspect.getDeclaredFields();for(Fieldfield:allFields){if(field.getType().isAssignableFrom(String.class)){System.out.println("Fieldname:"+field.getName());//Howtogettheactualvalueofthestring?!?!//StringstrValue=?

java - 有什么方法可以进一步优化 Java 反射方法调用?

我想知道是否可以实现任何其他优化来提高Java中反射调用的速度。并不是说性能令人望而却步,但是当我想到我正在编写的库中的某些代码在某处以紧密的循环实现时,我感到很沮丧。考虑一个实用方法来反射调用:publicstaticObjectinvoke(ObjecttargetObject,StringmethodName,Object[]arguments,Class[]signature)基本操作是returnmethod.invoke(targetObject,arguments);作为性能优化,我使用目标对象的类、方法名称和签名的哈希缓存方法(其代码可能会有所改进),但除此之外,我还能

java - 有什么方法可以进一步优化 Java 反射方法调用?

我想知道是否可以实现任何其他优化来提高Java中反射调用的速度。并不是说性能令人望而却步,但是当我想到我正在编写的库中的某些代码在某处以紧密的循环实现时,我感到很沮丧。考虑一个实用方法来反射调用:publicstaticObjectinvoke(ObjecttargetObject,StringmethodName,Object[]arguments,Class[]signature)基本操作是returnmethod.invoke(targetObject,arguments);作为性能优化,我使用目标对象的类、方法名称和签名的哈希缓存方法(其代码可能会有所改进),但除此之外,我还能

java - 是否可以在 Java 中进行猴子补丁?

我不想讨论这种方法的优点,只要可能。我相信答案是“不”。但也许有人会让我大吃一惊!假设您有一个核心小部件类。它有一个方法calculateHeight(),返回一个高度。高度太大-这导致按钮(比如说)太大。您可以扩展DefaultWidget来创建自己的NiceWidget,并实现自己的calculateHeight()以返回更好的尺寸。现在是一个库类WindowDisplayFactory,以相当复杂的方法实例化DefaultWidget。您希望它使用您的NiceWidget。工厂类的方法如下所示:publicIWidgetcreateView(Componentparent){De