このように定義された列挙型クラスがあるとします(Javaドキュメントから適応)
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 によってオーバーライドされた関数 (以下で定義されている一般的な関数ではありません) をフックする XPosed を使用したいと考えています。その機能にアクセスするにはどうすればよいですか?
試してみfindAndHookMethod("com.example.planetExample.Planet", lpparam.classLoader, "surfaceGravity", [etc])
ましたが、それは Planet クラスで定義された一般的な surfaceGravity のみをフックし、MERCURY で定義されたものではありません。com.example.planetExample.Planet$MERCURY
またはを試してみると、関数が見つからないcom.example.planetExample.Planet.MERCURY
という XPosed からのエラーが表示されます。surfaceGravity
XPosed を使用してこの関数をフックする方法はありますか?