用于从POJO类获取指定参数的函数

时间:2017-02-06 19:40:57

标签: java frameworks java-8

使用java我想创建一个函数,其输入是一个查询(如XPath),输出是类中的指定参数(下面给出的例子),是否有一个框架可以用来获得类似的结果。

实施例: - 需要编写函数的代码 String getParams(String,List< Topic>)

package temp;

import java.util.ArrayList;
import java.util.List;

public class Temp {

    public static void main(String[] args) {
        List<Topic> topics = new ArrayList<Topic>();
        topics.add(new Topic("XYZ", "XYZ-param1", "XYZ-param2", 123, null));
        topics.add(new Topic("ABC", "ABC-param1", "ABC-param2", 234, null));

        List<Subscription> subs = new ArrayList();
        subs.add(new Subscription("subs1", "subs1-param1", 701, null));
        topics.add(new Topic("123", "123-param1", "123-param2", 234, subs));

        String input1 = "/topics/{name = XYZ}/";
        String input2 = "/topics/{name = ABC}/param1/";
        String input3 = "/topics/{name = 123}/subs/{name = subs1}/param2";
        // If a topic with name XYZ is present in the list (topics), should return a string (json format) containing members of class Topic
        getParams(input1, topics); // output - "{"name":"XYZ", "param1":"XYZ-param1", "param2":"XYZ-param2","param3":"123", []}"
        // If a topic with name ABC is present in the list (topics), should return a param1.toString of that class Topic
        getParams(input2, topics); // output - "ABC-param1" 
        // If a topic with name 123 is present in the list (topics) and a subscription with name subs1 is present in the topics subscription list, should return a param2.toString of that class Subscription
        getParams(input3, topics); // output - "701"
    }

    public class Consumer {
        public Consumer() {
            super();
            // TODO Auto-generated constructor stub
        }
        public String name;
        public double param1;
    }

    public class Subscription {
        public Subscription(String name, String param1, int param2, List<Consumer> consumers) {
            super();
            this.name = name;
            this.param1 = param1;
            this.param2 = param2;
            this.consumers = consumers;
        }
        public String name;
        public String param1;
        public int param2;
        public List<Consumer> consumers;
    }

    public class Topic {
        public Topic(String name, String param1, String param2, long param3, List<Subscription> subs) {
            super();
            this.name = name;
            this.param1 = param1;
            this.param2 = param2;
            this.param3 = param3;
            this.subs = subs;
        }
        public String name;
        public String param1;
        public String param2;
        public long param3;
        public List<Subscription> subs;
    }

}

0 个答案:

没有答案