在Java中创建一个匿名内部类时,可以使用内联对象初始化。但是,在Android开发中,这种方法可能不会按预期起作用。通常是由于内联初始化语法会引起编译器问题。
以下是一个示例:
原始代码:
button.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { // do something } });
内联初始化:
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // do something } });
这段代码会在编译时引发错误。
在Android开发中,解决这个问题的方法是声明一个带有单个方法的接口,并在内部类中实现它。在这种情况下,可以使用Lambda表达式来简化代码。
示例代码:
public interface OnClickListener { void onClick(View v); }
button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // do something } });
或使用Lambda表达式:
button.setOnClickListener(v -> { // do something });
这两种方法都可以正常工作,并且内联对象初始化问题已得到解决。