在BlackBerry开发过程中, 你会发现很多地方需要使用inner类,就是慝名类, 就象下面这样的:
//-----------------------------------------------------------------
menu.add(new MenuItem("打开", 100, 10) {
public void run() {
openSelectedDocument();
}
});
//-----------------------------------------------------------------
原因是很多BlackBerry组件的功能是需要通过继承和扩展某些方法而实现的, 同时需要扩展的方法往往很简单, 不值得单独起一个类来实现.
比如上面的代码用于生成一个菜单项, 需要继承MenuItem类, 同时覆盖run()方法, 象这种类如果每个都单独起一个java文件来实现的话就导致有很多类要维护, 所以不如简单地在创建的时候加一个方法覆盖就好了.
这一点刚开始使用时很不习惯, 特别是对于一些编码习惯比较好的程序员(比如我这样的....:-), 总觉得这种代码在严格意义上并没有遵从面对对象的规则. 所以很多人会象我这样尝试编写一些复杂,灵活的类来取代这些分散在各段代码中的inner类. 最后会发现这是一件吃力不讨好的事....
再回过头来看BlackBerry开发环境中的样例, 可以发现这些样例的开发者在肆无忌惮地使用着这些有些脑人的inner类.
最终我个人总结是对于一般的项目, 完全可以放心的使用这些inner类, 对于代码管理也不会造成太大的问题, 同时在效率上也不会有问题.
当然,如果是一些大型项目,前期规划比较好的, 对于某些inner类还是可以考虑统一实现,便于代码的重用.