Tag: methodhandle invokevirtual

对象的InvokeExact,其类型由classloader动态加载

我花了一整天时间来解决这个问题。 我的问题是如何在一个实例上进行MethodHandle.invokeExact调用,该类的类类型在程序运行时动态加载。 为了使问题更清楚,我在下面展示我的示例代码: Class expClass = new MyClassLoader().load(….) //expClass is AddSample.class which is subclass of BaseTemplate BaseTemplate obj = expClass.getConstructor(…) .newInstance(…); MethodHandle myMH = MethodHandles.lookup().findVirtual(expClass, methodName,..); System.out.println(“Object type “+obj.getClass()); //Print AddSample // If obj is declared as “AddSample obj”, the runtime would be OK. assertEquals((int)myMH.invokeExact(obj,”addintaasdsa” , 10 , 20.0f), 12); 在此示例中,expClass是动态加载的,其类类型是AddSample 。 下一行中的obj实例声明为BaseTemplate,其实际类型为AddSample 。 AddSample类是BaseTemplate的子类。 […]