自己的写的代码中存在多个方法,类似这样。
public String a10100Process(String code) throws Exception {
A10100Request a10100Request = SpringUtil.getBean( "A10100Request", A10100Request.class);
………………………………
return a10100Request.toString();
}
public String a10101Process(String code) throws Exception {
A10101Request a10101Request = SpringUtil.getBean( "A10101Request", A10101Request.class);
………………………………
return a10101Request.toString();
}
我如何能够做到通过传入不同的code,实例化不同的对象。
换句话说红框中的内容是否是可以使用变量存储的,我自己试过使用Class.forName的方式获取到class是不能够作为类型来定义变量的。
Class.forName是可以的,但是名字吆包含包名,要完整,要大小写匹配,要先加载对应的jar包(如果是外部的类)
https://blog.csdn.net/chang3247/article/details/72285923/
要注意私有构造函数/私有类的问题
https://blog.csdn.net/hexingen/article/details/79355193
可以看出,您的A10100Request,A10101Request是类。是类就可以通过Class反射来设计。传递的参数可以用Class来实现分类。不一定非要用code。
public String ClassProcess(Class clazz) throws Exception {
Object obj = SpringUtil.getBean( clazz.getSimpleName(), clazz);
return obj.toString();
}
其实很简单,一个共同的方法,通过传入的code来实例化不同的对象
public String a10100Process(String code) throws Exception {
//你的code是不是已知的,就是固定是多少的?
String str="";
if(code.equles("a10100"))
{
A10100Request a10100Request= SpringUtil.getBean( "A10100Request", A10100Request.class);
str= a10100Request.toString();
}else if(code.equles("a10101"))
{
A10101Request a10101Request = SpringUtil.getBean( "A10101Request", A10101Request.class);
str=a10101Request.toString();
}
return str;
}
这不就是工厂模式吗。。。