站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题问个代码风格问题

问个代码风格问题

摘要: 问个代码风格问题


Predicate notWeekendPredicate = new Predicate() {

public boolean evaluate(Object obj) {

String str = (String) obj;

if ("Saturday".equalsIgnoreCase(str)) {

return false;

}

if ("Sunday".equalsIgnoreCase(str)) {

return false;

}

return true;

}

};



这个写法不明白,高手指点下。呵呵!


应该叫做内部类吧


定义了一个内部类Predicate并实例化一个对象notWeekendPredicate.

以后可以用notWeekendPredicate.evaluate(obj)来判断obj是否能转化成字符串"Saturday"或"Sunday"——如果obj有toString方法的话,没有会报异常。




Predicate这个类已经有了,是import org.apache.commons.collections.Predicate;


相当于:
class Predicate{
public boolean evaluate(Object obj) {}
}
Predicate notWeekendPredicate= new Predicate();

只不过用你列的那种方法,只能生成一个实例,就是notWeekendPredicate;
而这个能无限次实例化。

但这个类每一个实例都是一样的功能 且没有类成员,所以一个已足够,可以且建议使用种方法。


也可以用静态方法



这是匿名内部类的用法.

Predicate要么是个接口, 要么是基类, 这里就定义了一个实现Predicate接口或者继承Predicate的类, 而且只使用一次...

匿名类有它的用途, 但不要过量使用, 否则会使得程序比较混乱...



汗!

不好意思啊!

不知道Predicate是个接口(不是类),接口不能实例化.上述代码相当于:

class PredicateClass implements Predicate{
public boolean evaluate(Object obj) {...}
}
Predicate notWeekendPredicate= new PredicateClass();



谢谢malligator(大螟) ,我上网查匿名内部类的资料了。谢谢你!结帐了。


↑返回目录
前一篇: 有没有Jakarta Commons API可以下载到?
后一篇: 怎样得到一个文件夹下的所有文件的名称?