gpt4 book ai didi

java - 广播接收器 : Create instance and override inline?

转载 作者:行者123 更新时间:2023-12-02 04:28:25 24 4
gpt4 key购买 nike

我不完全理解如何创建 BroadcastReceiver 的实例,然后覆盖内联。我习惯于创建一个类并“扩展”另一个类,然后在子类中覆盖。

我来自.NET,所以这可能就是它有点奇怪的原因;有人能帮我理解吗,因为我真的不明白发生了什么?

这就是我要说的

    private final BroadcastReceiver dynamicReceiver 
= new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {

// TODO

}
};

正如您在上面看到的,它被创建为类中的实例,然后重写其方法。

最佳答案

Java 允许您创建匿名类。这些类是通过

创建的
'new' <type> '(' <constructor-args> ')' '{' <class-body> '}' 

表达式。这样的类实际上被编译成名为'parent-type'$'ord'.class的单​​独的类文件。然后像平常一样实例化该类型,并返回实例作为表达式的结果。

这些匿名类与内部类共享功能,即可以直接访问外部类的字段,也可以通过 OuterClass.this 语法访问外部类的字段。然而,他们也可以访问当前范围内的最终变量。

查看更多:https://docs.oracle.com/javase/tutorial/java/javaOO/anonymousclasses.html

关于java - 广播接收器 : Create instance and override inline?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31837964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com