当前页面: 开发资料首页 → 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(大螟) ,我上网查匿名内部类的资料了。谢谢你!结帐了。