gr79144845
偏执无明
2019-07-08 15:24
采纳率: 100%
浏览 2.6k

java根据传入的参数实例化不同的对象

自己的写的代码中存在多个方法,类似这样。

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是不能够作为类型来定义变量的。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • caozhy
    已采纳

    Class.forName是可以的,但是名字吆包含包名,要完整,要大小写匹配,要先加载对应的jar包(如果是外部的类)
    https://blog.csdn.net/chang3247/article/details/72285923/
    要注意私有构造函数/私有类的问题
    https://blog.csdn.net/hexingen/article/details/79355193

    点赞 评论
  • hydhyd212
    风雨后的晴 2019-07-08 15:38

    可以看出,您的A10100Request,A10101Request是类。是类就可以通过Class反射来设计。传递的参数可以用Class来实现分类。不一定非要用code。
    public String ClassProcess(Class clazz) throws Exception {
    Object obj = SpringUtil.getBean( clazz.getSimpleName(), clazz);
    return obj.toString();
    }

    点赞 评论
  • qq_23126581

    其实很简单,一个共同的方法,通过传入的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;
        }
    
    
    点赞 评论
  • cwq950617
    猿9527 2019-07-08 17:45

    这不就是工厂模式吗。。。

    点赞 评论

相关推荐