Необходимо создать интерфейс, который обеспечивает функцию (функции), которую Вы хотите раздать. например:
/**
* A simple interface to wrap up a function of one argument.
*
* @author rcreswick
*
*/
public interface Function1<S, T> {
/**
* Evaluates this function on it's arguments.
*
* @param a The first argument.
* @return The result.
*/
public S eval(T a);
}
Затем когда необходимо передать функцию, можно реализовать тот интерфейс:
List<Integer> result = CollectionUtilities.map(list,
new Function1<Integer, Integer>() {
@Override
public Integer eval(Integer a) {
return a * a;
}
});
Наконец, функция карты использует переданный в Function1 следующим образом:
public static <K,R,S,T> Map<K, R> zipWith(Function2<R,S,T> fn,
Map<K, S> m1, Map<K, T> m2, Map<K, R> results){
Set<K> keySet = new HashSet<K>();
keySet.addAll(m1.keySet());
keySet.addAll(m2.keySet());
results.clear();
for (K key : keySet) {
results.put(key, fn.eval(m1.get(key), m2.get(key)));
}
return results;
}
можно часто использовать Выполнимый вместо собственного интерфейса, если Вы не должны передавать в параметрах, или можно использовать различные другие методы для проведения менее "фиксированного" подсчета параметрического усилителя, но это обычно - согласование с безопасностью типов. (Или можно переопределить конструктора для функционального объекта для передачи в параметрических усилителях того пути.. существует много подходов и некоторой работы лучше при определенных обстоятельствах.)
Короче говоря, вы не можете.
Возможно, вы захотите рассмотреть возможность использования вместо этого диалогового окна jQuery UI .
Вы не можете. Используйте библиотеку пользовательского интерфейса javascript (jQuery UI, YUI, Mootools) и имитируйте нужный диалог.