gpt4 book ai didi

java - new Foo(bar) {public void baz(){....} }; 是什么意思?在Java中是什么意思?

转载 作者:行者123 更新时间:2023-12-01 18:46:07 30 4
gpt4 key购买 nike

我正在尝试了解 Android SDK 的 NavigationDrawer 示例,我遇到了这个:

 ActionBarDrawerToggle mDrawerToggle = new ActionBarDrawerToggle(
this, /* host Activity */
mDrawerLayout, /* DrawerLayout object */
R.drawable.ic_drawer, /* nav drawer image to replace 'Up' caret */
R.string.drawer_open, /* "open drawer" description for accessibility */
R.string.drawer_close /* "close drawer" description for accessibility */
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}

public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};

实例化之后什么时候调用这些方法?我不熟悉这个语法。这是如何运作的?谢谢

最佳答案

这是一个匿名内部类。给定一个具有 0 个或多个抽象方法的接口(interface)或类 Foo,您可以使用:

Foo blech=new Foo(){
void bar(int baz){
System.out.println("quux");
}
}

创建 Foo 的实例,并实现或覆盖方法。所有抽象方法(可能有 0 个)都需要在大括号中实现。构造函数仍然照常调用,参数可以在括号中传递。

这些通常用于需要运行的监听器或其他对象,并且应该指定不同的操作,而无需创建扩展或实现它们的新类。

这些将编译为[外部类]$[Number].class,对于代码中使用的每个匿名内部类一次,即使任何一个从未到达或任何一个被多次使用

关于java - new Foo(bar) {public void baz(){....} }; 是什么意思?在Java中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17777451/

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