JavaFX z Arią - powrót do strony głównej

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<>();).