我收到以下代码的错误“抽象方法未指定主体”....
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在他的回答中,阅读有关此的内容是个好主意。网上有很多信息,例如here或 here .
关于java - java类初始化函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8202161/