/* Function.java
Purpose:
Description:
History:
Thu Aug 30 10:24:49 2007, Created by tomyeh
Copyright (C) 2007 Potix Corporation. All Rights Reserved.
{{IS_RIGHT
This program is distributed under LGPL Version 2.1 in the hope that
it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.xel;
import java.lang.reflect.Method;
/**
* Represents a XEL function.
*
* @author tomyeh
* @since 3.0.0
*/
public interface Function {
/** Returns an array of Class objects that represent the formal
* parameter types, in declaration order, of the method represented
* by this Method object.
*
* <p>Returns an array of length 0 if the underlying method
* takes no parameters.
*/
public Class<?>[] getParameterTypes();
/** Returns a Class object that represents the formal return type
* of the method
* represented by this Method object.
*/
public Class<?> getReturnType();
/** Invokes this method with the specified arguments.
*
* @param obj the object the underlying method is invoked from.
* It is always null if this function is invoked in an XEL expression.
* It is reserved for more sophisticated expressions, such as
* ZK Spreadsheet's expressions.
* @param args the arguments used for the method call.
* If null, an Object array with zero length is assumed.
*/
public Object invoke(Object obj, Object... args) throws Exception;
/** Converts this function to a method, or null if unable to convert.
*/
public Method toMethod();
}