java调料包数据(看案例能猜到实现了什么功能吗?)

本文展示了一个使用Java实现的多态与HashMap结合的案例,通过不同类的talk方法和类型参数,展示了如何利用HashMap和反射机制实现多态调用。案例中包括Fjy、Zyl和Hzx三个类,分别对应不同的talk方法参数类型。
摘要由CSDN通过智能技术生成

啥也不说…看案例,能猜到这样做是为了实现什么功能吗?嘻嘻嘻

import java.util.HashMap;

interface Person{

	public void talk(HashMap context);
}
class Fjy implements Person{
	String name="傅靖耀";
	
	@Override
	public void talk(HashMap context) {//要求是String的参数
		// TODO Auto-generated method stub
		String str = null;
		if(context.containsKey("Fjy")) {
			str=(String) context.get("Fjy");
			str=str+"!!!";
		}
		System.out.println(this.name+"说了一些话:"+str);
	}
	
}
class Zyl implements Person{
	String name="张杨磊";
	
	@Override
	public void talk(HashMap context) {//要求是Int的参数
		// TODO Auto-generated method stub
		int i = 0;
		if(context.containsKey("Zyl")) {
			i= (int) context.get("Zyl");
			i++;
		}
		System.out.println(this.name+"说了一些话:今天干了"+i+"份任务");
	}
	
}
class Hzx implements Person{
	String name="侯张旭";

	@Override
	public void talk(HashMap context) {//要求是Boolean的参数
		// TODO Auto-generated method stub
		boolean b = false;
		if(context.containsKey("Hzx")) {
			b=(boolean) context.get("Hzx");
			
		}
		System.out.println(this.name+"说了一些话:我说的都是"+b+"的真理啊");
	}
	
}

class ZuZhuangZhe{//组装者
	HashMap hash;
	
	ZuZhuangZhe(){
		hash=new HashMap();
		hash.put("傅靖耀", "Fjy");
		hash.put("张杨磊", "Zyl");
		hash.put("侯张旭", "Hzx");
		
		
	}
	public Person setZuZhuangZhe(String name) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
		Class c=Class.forName((String) hash.get(name));
		Person p=(Person) c.newInstance();
		return p;
	}
	public void talkFor(Person p,HashMap type) {
		p.talk(type);
	}
}
public class ContextDemo {

	public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
		// TODO Auto-generated method stub
		ZuZhuangZhe z=new ZuZhuangZhe();
		HashMap type=new HashMap();
		type.put("Fjy", "GirlFriend");
		type.put("Zyl",1);
		type.put("Hzx",true);
		
		Person p1=z.setZuZhuangZhe("傅靖耀");
		z.talkFor(p1,type);
		Person p2=z.setZuZhuangZhe("张杨磊");
		z.talkFor(p2, type);
		Person p3=z.setZuZhuangZhe("侯张旭");
		z.talkFor(p3, type);
	}

}

猜不到给点提示:向下拉(别拉到底)















































提示执行结果:
在这里插入图片描述

最终答案在下面:看看你是否已经猜对了!















































需要实现的结果是:在栗子中有三个实例类,Fjy,Zyl,Hzx,他们都有不一样的talk方法的参数,
Fjy的talk参数是talk(String str);
Zyl的talk参数是talk(int i);
Hzx的talk参数是talk(Boolean b);
三个参数都是不一样的,我又想要通过多态来实现这些方法,以上代码就做来这个事情,通过一个HashMap散列表实现了功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值