Скажем, у меня есть класс перечислимую, определенный как это (взято из java documentation)Экспоузд: Hooking функция переопределена в перечислении
package com.example.planetExample;
public enum Planet {
MERCURY (3.303e+23, 2.4397e6){
public double surfaceGravity() {
return 42;
}
},
VENUS (4.869e+24, 6.0518e6);
private final double mass; // in kilograms
private final double radius; // in meters
Planet(double mass, double radius) {
this.mass = mass;
this.radius = radius;
}
// universal gravitational constant (m3 kg-1 s-2)
public static final double G = 6.67300E-11;
double surfaceGravity() {
return G * mass/(radius * radius);
}
}
Теперь я хочу использовать Экспоузд крючок функцию surfaceGravity
, которая была перекрываться MERCURY (и не общий, определенный ниже). Как я могу получить доступ к этой функции?
Я пробовал findAndHookMethod("com.example.planetExample.Planet", lpparam.classLoader, "surfaceGravity", [etc])
, но это только перехватывает общую поверхностьGravity, определяемую классом Planet, а не тот, который определяется MERCURY. Если я попробую com.example.planetExample.Planet$MERCURY
или com.example.planetExample.Planet.MERCURY
, я получаю ошибки от XPosed, что функция surfaceGravity
не может быть найдена.
Есть ли способ подключить эту функцию с помощью XPosed?