Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法返回布尔值,但类文件代码返回void_Java_Android_Lambda_Bytecode_Void - Fatal编程技术网

Java 方法返回布尔值,但类文件代码返回void

Java 方法返回布尔值,但类文件代码返回void,java,android,lambda,bytecode,void,Java,Android,Lambda,Bytecode,Void,一个返回布尔值的方法,当id反编译类文件时,我发现该方法调用另一个在返回位置返回void值的方法 Toolbar mToolbar=findviewbyd(R.id.Toolbar); mToolbar.setOnMenuItemClickListener(项->{ ensorsDataAutoTrackHelper.trackMenuItem(项);//该方法是静态的,无效 返回false; }); 您可以看到我调用了一个方法并返回false。 trackMenuItem定义如下 publi

一个返回布尔值的方法,当id反编译类文件时,我发现该方法调用另一个在返回位置返回void值的方法

Toolbar mToolbar=findviewbyd(R.id.Toolbar);
mToolbar.setOnMenuItemClickListener(项->{
ensorsDataAutoTrackHelper.trackMenuItem(项);//该方法是静态的,无效
返回false;
});
您可以看到我调用了一个方法并返回false。
trackMenuItem
定义如下

public static void trackMenuItem(MenuItem menuItem) 
我构建应用程序的apk文件,并对其进行反编译。因为lambda方法将生成一个tmp类。结果代码是

public final /* synthetic */ class -$$Lambda$NavigationViewActivity$A_xAUBU6FC7Uc53_iFueQ6S_r1c implements OnMenuItemClickListener {
    public static final /* synthetic */ -$$Lambda$NavigationViewActivity$A_xAUBU6FC7Uc53_iFueQ6S_r1c INSTANCE = new -$$Lambda$NavigationViewActivity$A_xAUBU6FC7Uc53_iFueQ6S_r1c();

    private /* synthetic */ -$$Lambda$NavigationViewActivity$A_xAUBU6FC7Uc53_iFueQ6S_r1c() {
    }

    public final boolean onMenuItemClick(MenuItem menuItem) {
        return SensorsDataAutoTrackHelper.trackMenuItem(menuItem);
    }
}
您可以在菜单项上看到
click
logic
return SensorsDataAutoTrackHelper.trackMenuItem(菜单项),

为什么会这样?
任何帮助都将不胜感激。

嗯,反编译器可能无法正确处理lambda。为什么首先要反编译代码?我正在研究lambda方法的用法。我不确定是不是反编译器的问题,反编译器是“jadx”。你能发布有问题的jar文件吗?这样,我们可以尝试不同的反编译器。“我正在研究lambda方法的用法。”-我仍然不太明白为什么您必须为此反编译代码。我曾尝试使用“dex工具”从APK文件中提取jar,我使用“jd gui”反编译jar文件,但“jd gui”显示内部错误。这是我的apk文件:反编译器可能无法正确处理lambda。为什么首先要反编译代码?我正在研究lambda方法的用法。我不确定是不是反编译器的问题,反编译器是“jadx”。你能发布有问题的jar文件吗?这样,我们可以尝试不同的反编译器。“我正在研究lambda方法的用法。”-我仍然不太明白为什么您必须为此反编译代码。我曾尝试使用“dex工具”从APK文件中提取jar,我使用“jd gui”反编译jar文件,但“jd gui”显示内部错误。这是我的apk文件: