import java.util.*;
import static will.Print.*;
class Processor{
public String name(){
return getClass().getSimpleName();
}
Object process(Object input){ return input;}
}
class Upcase extends Processor{
String process(Object input){// Covariant return
return ((String)input).toUpperCase();
}
}
class Downcase extends Processor{
String process(Object input){
return ((String)input).toLowerCase();
}
}
class Splitter extends Processor{
String process(Object input){
// The split() argument divides a String into pieces:
return Arrays.toString(((String)input).split(" "));
}
}
public class Apply{
这个方法我没有理解
public static void process(Processor p,Object s){
print("Using Processor"+p.name());
print(p.process(s));
}
public static String s =
"Disagreement with beliefs is by definition incorrect ";
public static void main(String[] args){
process(new Upcase(),s);
process(new Downcase(),s);
process(new Splitter(),s);
}
------解决思路----------------------
public static void process(Processor p,Object s)
简单理解就是process方法是中介
将定义的处理类和要处理的数据在这个地方联系起来
而且只是定义接口规范(这里好像没用的接口,但意义差不多)
具体需要怎么处理,就看传入的是什么样的Processor的子类了
------解决思路----------------------
p,process(s)是具体的Processor子类处理传入的数据s
比如第一个process(new Upcase(),s);
就会调用
String process(Object input){// Covariant return
return ((String)input).toUpperCase();
将s内容转为大写,并把大写字符串返回
然后print(引入的静态方法)将返回的大写字符串打印出来