本人小白,有个Java语法问题,未知类,求大佬看看


Class clazz = loadPackageParam.classLoader.loadClass("com.sagittarius");
            //不加final修饰内部无法访问
         final Class<?> personClass = XposedHelpers.findClass("com.live.eggplant.widget", loadPackageParam.classLoader);
            XposedHelpers.findAndHookMethod(
                    clazz,
                    "attachBaseContext",
                    Context.class,
                    new XC_MethodHook() {

                        protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                            Context context = (Context) param.args[0];
                            ClassLoader classLoader =context.getClassLoader();
                            XposedHelpers.findAndHookMethod(
                                    "com.live.eggplant.widget.video.CustomGSYVideoPlayer",
                                    classLoader,
                                    "a",
                                    //我在这里调用显示未知类,我该怎么调用
                                    personClass.class,  
                                    new XC_MethodHook() {
                                        

                                    });

                            
                        }


                    });
阅读 2.7k
3 个回答

你这个应该是xposed的,personClass.class类是目标程序上的类吧,应该有字符串写法的我记得。

刚刚看了下,这个personClass.class位置应该是填写 Class类型,你可以借助XposedHelpers.findClass api去获取Class

存在访问时间的问题,personClass对象可能已经走完生命周期,但是XC_MethodHook内部类还没有调用personClass这个对象。在内部类中引用外部的局部变量时要求变量为final,Java编译器会为加了final标志且被内部类引用的局部变量在内部类中拷贝一份。

直接使用变量 personClass 就行. 这本来就是一个类对象了.

如果是 class personClass {} 这种定义才需要personClass.class访问方式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题