在一些示例代码中,有一些方法和类在其他方法和/或类中声明。
我从未听说过/读过这个。这种编程有什么影响?在一个单独的文件和方法中并排写下类而不是彼此之间(就像每本书都告诉你的那样)不是更好吗?这种编程有哪些优点和缺点?
这是我的意思的一个例子:
Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
TextView textView = (TextView) findViewById(R.id.description);
textView.setText(mRoad.mName + " " + mRoad.mDescription);
MapOverlay mapOverlay = new MapOverlay(mRoad, mapView);
List<Overlay> listOfOverlays = mapView.getOverlays();
listOfOverlays.clear();
listOfOverlays.add(mapOverlay);
mapView.invalidate();
}
};
答案 0 :(得分:6)
类中可以有两种类:内部类和匿名类。
两者主要用于创建不单独工作但需要访问周围对象的类。这些类具有对整个周围对象的完全访问权限(例外:静态内部类的定义)。
答案 1 :(得分:4)
这被称为匿名内部类。假设您只在一个地方使用该类,并且该类简短,那么创建公共类可能没有意义。
This page包含有关匿名内部类的更多信息。
答案 2 :(得分:2)
Here是对匿名课程的一个很好的解读,以及它们为什么有用。它主要用于类的实现非常短并且不能在其他任何地方重用的场景。通过使用此匿名实现,您可以保持代码简洁明了。
答案 3 :(得分:2)
在定义您正在使用的接口的小实现时,匿名类很常见,例如EventListeners。有一点需要注意的是,除非它们被声明为final,否则你将无法访问局部变量(和参数)。
答案 4 :(得分:1)
是的,这叫做:匿名课。
您可以在此处详细了解: http://docstore.mik.ua/orelly/java-ent/jnut/ch03_12.htm
答案 5 :(得分:1)
内部类还具有能够在没有显式指针的情况下引用容器类的优点。
匿名只是一个简洁的问题。
答案 6 :(得分:1)
其中一个公共示例是监听器实现:
class myPanel extends JPanel {
public MyPanel() {
JButton b1 = new JButton("Hello");
b1.addActionListener(
new ActionListener() {
public void actionPerformed(ActionEvent e) {
// do something for button b1
}
}
);
}
}
现在假设Listener实现可以依赖于某些外部类(myPanel)属性。 使用匿名类您可以轻松地执行此操作。