Фрида - Вызывая указанную перегрузку метода c - PullRequest
0 голосов
/ 15 апреля 2020

Я изучаю программу Android, в которой есть несколько методов с одинаковыми именами и параметрами.

Мне нужно вызвать конкретную c перегрузку метода. Java код, подобный этому

package a;
public class d
{
     public int a() {
        return 10;
    }

    public long a() {
        return 20;
    }
    public long b() {
        long ret = a();
        return ret + 1;
    }
}

Мне нужно заменить реализацию b () и вызвать (int) a () вместо (long) a (). Пожалуйста, помогите мне исправить мой код Фриды js.

Java.perform(function () {
  Var Class_A_D = java.Use("a.d");
  Class_A_D.b.implementation = function(){
    var ret = this.(a); // need to call int implementation
    return ret;
 }
}

1 Ответ

0 голосов
/ 19 апреля 2020

Код в классе d нарушает принцип сигнатуры метода, который определяется именем метода и каждым типом параметра.

Поскольку тип метода не является частью сигнатуры Java читает эти методы как то же самое: publi c int a () {...} publi c long a () {...}

обе подписи "a ()"

Вы должны переименуйте эти методы, чтобы иметь разные имена (или иметь входные параметры разных типов)

Подробнее здесь: https://docs.oracle.com/javase/tutorial/java/javaOO/methods.html

...