String作为参数传递

 

import java.util.Arrays;

/** 
 * @author hint 
 * @creation date 2010-10-6 下午08:22:38 
 *
 * 
 * 策略模式
 * 
 */
class Processor{
	
	public String name(){
		return getClass().getSimpleName();
	}
	
	public Object process(Object input){
		return input;
	}
	
}


class Upcase extends Processor{
	
	@Override
	public String process(Object input) {
		return ((String)input).toUpperCase();
	}
}

class Downcase extends Processor{
	
	@Override
	public String process(Object input) {
		return ((String)input).toLowerCase();
	}
}

class Splitter extends Processor{
	
	@Override
	public String process(Object input) {
		return Arrays.toString((((String)input).split(" ")));
	}
}

class Apply{
	public static void process(Processor p,Object o){
		System.out.println("using process "+p.name());
		System.out.println(p.process(o));
	}
	
}

public class StrategyPattern {
	
	public static void main(String[] args) {
		String abc = "Hello world, this is a strategy pattern !";
//		String str = new String("Hello world, this is a strategy pattern !");
		Apply.process(new Downcase(), abc);
		System.out.println("1.  "+abc);
		/*Apply.process(new Upcase(), str);
		System.out.println("2.  "+str);
		Apply.process(new Splitter(), str);*/
	}
	
}
 
 

 结果为:

 

 

using process Downcase
hello world, this is a strategy pattern !
1.  Hello world, this is a strategy pattern !
 

 

 对应的反汇编代码为:

 

 

    // Compiled from StrategyPattern.java (version 1.6 : 50.0, super bit)
public class chapart9_interface.StrategyPattern {
  
  // Method descriptor #6 ()V
  // Stack: 1, Locals: 1
  public StrategyPattern();
    0  aload_0 [this]
    1  invokespecial java.lang.Object() [8]
    4  return
      Line numbers:
        [pc: 0, line: 58]
      Local variable table:
        [pc: 0, pc: 5] local: this index: 0 type: chapart9_interface.StrategyPattern
  
  // Method descriptor #15 ([Ljava/lang/String;)V
  // Stack: 4, Locals: 2
  public static void main(java.lang.String[] args);
     0  ldc <String "Hello world, this is a strategy pattern !"> [16]//从常量池中得到字符串对象("Hello world, this is a strategy pattern !"),并压入栈中;
     2  astore_1 [abc]//取栈中数据(赋值给abc) 
     3  new chapart9_interface.Downcase [18]//创建对象Downcase
     6  dup//复制栈顶压入栈
     7  invokespecial chapart9_interface.Downcase() [20]
    10  aload_1 [abc]//将对象abc引用存储在main方法局部变量1的位置  
    11  invokestatic chapart9_interface.Apply.process(chapart9_interface.Processor, java.lang.Object) : void [21]
    14  getstatic java.lang.System.out : java.io.PrintStream [27]
    17  new java.lang.StringBuilder [33]
    20  dup
    21  ldc <String "1.  "> [35]
    23  invokespecial java.lang.StringBuilder(java.lang.String) [37]
    26  aload_1 [abc]//将对象abc引用存储在main方法局部变量1的位置  
    27  invokevirtual java.lang.StringBuilder.append(java.lang.String) : java.lang.StringBuilder [40]
    30  invokevirtual java.lang.StringBuilder.toString() : java.lang.String [44]
    33  invokevirtual java.io.PrintStream.println(java.lang.String) : void [48]
    36  return
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值