2015-12-08 5 views
3

У меня есть класс JAVA, который имеет два метода. Первый - основной метод, второй - метод1().Как передать аргументы функции, написанной внутри выражения MVEL?

Скажем следующее класс:

public class SomeClass() { 
    public static void main(String[] args) { 
    SomeClass myObj = new SomeClass(); 
    Map<String,Object> map = new HashMap<String,Object>(); 
    map.put("obj", myObj); 
    MVEL.eval("System.out.println(\"I am inside main method\");obj.method1();",map); 
    } 
    public static void method1(List<String> listOfStrings){ 
    System.out.println("I am inside method 1"); 
    } 
} 

Теперь, как вы можете видеть в выражении, чтобы позвонить method1, мне нужно передать список в качестве аргументов. Как это сделать? Какие изменения необходимы в выражении? Что делать, если я хочу передать динамические аргументы в моей программе?

+0

взглянуть на ответ, должен решить ваш Цель –

ответ

4

Вы можете создать List или получить его из какого-либо другого источника в качестве аргумента.

Только что вам нужно позаботиться, чтобы поместить внутрь map объекта, который используется MVEL для оценки.

нужно передать список как уже упоминалось ->obj.method1(myList);

Рабочий код Ниже

public class SomeClass { 
    public static void main(String[] args) { 
     SomeClass myObj = new SomeClass(); 
     Map<String, Object> map = new HashMap<String, Object>(); 
     map.put("obj", myObj); 

     List<String> listOfStrings = new ArrayList<String>(); 
     listOfStrings.add("my "); 
     listOfStrings.add("List "); 
     listOfStrings.add("is printing"); 

     map.put("obj", myObj); 
     map.put("myList", listOfStrings); 

     MVEL.eval("System.out.println(\"I am inside main method\");obj.method1(myList);",map); 
    } 

    public static void method1(List<String> listOfStrings) { 
     System.out.println("I am inside method 1"); 
     for (String s : listOfStrings) { 
      System.out.print(s); 
     } 
    } 
} 

выход

I am inside main method 
I am inside method 1 
my List is printing 
+0

Спасибо m Уч. Работает отлично. – Anuj

+0

@Anuj, пожалуйста, поддержите оба ответа, теперь вы можете –

+0

Мне нужна помощь. Ты там? – Anuj