java - java类初始化函数定义

标签 java android anonymous-class

我收到以下代码的错误“抽象方法未指定主体”....

    DCWebView.setWebViewClient(new MyWebViewClient() {
        @Override
        public abstract void launchExternalBrowser(String url) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
        }
    });

MyWebViewClient 是一个抽象类。我想知道上面的代码到底在做什么。它显然打算为类定义函数...我可以将任何代码放在 new MyWebViewClient() { } 中来定义变量和其他函数吗?

还有什么其他很棒的事情可以在这里完成?

最佳答案

只需删除 abstract 即可。如果 launchExternalBrowser 方法未在 MyWebViewCLient 中定义,您还应该删除 @Override 注释。 @Override 表示您覆盖在扩展类层次结构中定义的方法。

DCWebView.setWebViewClient 方法需要类型为 MyWebViewClient 的对象作为参数。通过编写 new MyWebClient() { .. },您可以创建一个扩展 MyWebViewClient 的匿名类的实例。

匿名类(几乎)与“普通”类相同。您可以在那里定义新变量和方法。主要区别在于匿名类是在使用它的地方定义的(没有外部类定义,因此它没有名称,它是“匿名的”)并且它只在这个地方使用(如没有外部定义,它不能在别处使用)。

匿名类在 Java 中非常常用,但这是更高级的东西。作为esaj said在他的回答中,阅读有关此的内容是个好主意。网上有很多信息,例如herehere .

关于java - java类初始化函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8202161/

相关文章:

java - Apache Shiro Stateless - 无 session JWT token 身份验证问题

java - BACK 键未完成 Activity

android - 如何在android中的水平条形图中显示可用和不可用的插槽

java - 匿名类成员无法重新初始化

java - 有没有办法控制hibernate validator 进行验证的顺序?

java - Android:在应用程序启动之间存储有序值列表

java - 如果在字符串常量池区域中创建(或已经存在)相同的字符串文字,那么在堆中创建重复的 String 对象有什么好处?

java - HttpURLConnection 不提交 POST 数据 (Android)

java - 为什么不在 java 的匿名类中构造函数?它与 OOPs 规则相矛盾

c# - 在 HtmlHelper 扩展方法中使用匿名对象