Interfejs Bindings
Interfejs Bindings to interfejs dziedziczący po Map<String, Object>
. Służy do przechowywania parametrów i atrybutów dla skryptów w postaci par <String key, Object value>
.
O interfejsie Bindings
będę jeszcze sporo pisał, ponieważ jest bardzo często używana.
Klasa E04_Bindings1.java
package jsr223groovy; import javax.script.Bindings; import javax.script.SimpleBindings; import java.util.ArrayList; public class E04_Bindings1 { public static void main(String[] args) { //Bindings params = new SimpleBindings(); SimpleBindings params = new SimpleBindings(); params.put("Jacek", 1952); params.put("Mirka", 1953); params.put("Ula", 1983); params.put("Suita", 2013); params.put("Aria", 2016); params.put("Elf", 2016); //Sprawdzenie wartości dla podanego klucza String suita= "Suita"; Object obj = getValue(params, suita); System.out.println(suita + " : " + obj); //Listowanie kluczy dla podanej wartości. int rok = 2017; ArrayList<String> keys = getKeys(params, rok); if(keys != null) { for (String a : keys) { System.out.println(a + " : " + rok); } }else{ System.out.println("no key" + " : " + rok); } } public static Object getValue(Bindings params, String key){ if(params.containsKey(key)){ return params.get(key); } return null; } public static ArrayList<String> getKeys(Bindings params, Object value){ ArrayList<String> al = new ArrayList<>(); if(params.containsValue(value)){ params.forEach((key, val) ->{ if(val.equals(value)){ al.add(key); } } ); } if(!al.isEmpty()){ return al; } return null; } }
Po uruchomieniu klasy na konsoli zobaczymy:
Suita : 2013 no key : 2017
Klasa module-info.java
module jsr223groovy { requires org.apache.groovy; requires java.scripting; requires java.sql; }
Klasa SimpleBindings
Klasa SimpleBindings
jest klasą konkretną implementującą Bindings
. Jej podstawową zaletą jest możliwość użycia konstruktora new SimpleBindings(Map<String, Object>)
na przykład new SimpleBindings(new TreeMap<>();
).