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;            }        };这个写法不明白,高手指点下。呵呵!

解决方案 »

  1.   

    定义了一个内部类Predicate并实例化一个对象notWeekendPredicate.以后可以用notWeekendPredicate.evaluate(obj)来判断obj是否能转化成字符串"Saturday"或"Sunday"——如果obj有toString方法的话,没有会报异常。
      

  2.   

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

  3.   

    相当于:
    class Predicate{
       public boolean evaluate(Object obj) {}   
    }
    Predicate notWeekendPredicate= new Predicate();只不过用你列的那种方法,只能生成一个实例,就是notWeekendPredicate;
    而这个能无限次实例化。但这个类每一个实例都是一样的功能 且没有类成员,所以一个已足够,可以且建议使用种方法。
    也可以用静态方法
      

  4.   

    这是匿名内部类的用法.Predicate要么是个接口, 要么是基类, 这里就定义了一个实现Predicate接口或者继承Predicate的类, 而且只使用一次...匿名类有它的用途, 但不要过量使用, 否则会使得程序比较混乱...
      

  5.   

    汗!不好意思啊!不知道Predicate是个接口(不是类),接口不能实例化.上述代码相当于:class PredicateClass implements Predicate{
       public boolean evaluate(Object obj) {...}   
    }
    Predicate notWeekendPredicate= new PredicateClass();
      

  6.   

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