-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Description
希望能支持方法重载,这样有利于同一类功能的方法直接定义在一起。比如
public final class DateFunction {
@QLFunction("date")
public static LocalDate date() {
return LocalDate.now();
}
@QLFunction("date")
public static LocalDate date(final String value) {
if (value == null) {
throw new IllegalArgumentException("date() function value parameter cannot be null");
}
return LocalDate.parse(value);
}
@QLFunction("date")
public static LocalDate date(final String value, final String format) {
if (value == null) {
throw new IllegalArgumentException("date() function parameter value cannot be null");
}
if (format == null) {
throw new IllegalArgumentException("date() function parameter format cannot be null");
}
return LocalDate.parse(value, DateTimeFormatter.ofPattern(format));
}
}
目前只能通过CustomFunction去间接处理,特别不方便,而且这样函数定义不够简洁。比如现在只能这样去定义
/**
* date()
* date(string)
* date(string, format)
*
* @author zxuanhong
* @date 2025-11-11 10:22
* @since
*/
public class DateFunction implements CustomFunction {
@Override
public Object call(final QContext qContext, final Parameters parameters) throws Throwable {
return switch (parameters.size()) {
case 0 -> LocalDate.now();
case 1 -> format(parameters.getValue(0), null);
case 2 -> format(parameters.getValue(0), parameters.getValue(1));
default -> null;
};
}
private LocalDate format(final Object value, final Object format) {
if (format == null) {
return null;
}
final DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format.toString());
return format(value, formatter);
}
private LocalDate format(final Object value, final DateTimeFormatter formatter) {
if (value == null) {
return null;
}
if (formatter == null) {
return LocalDate.parse(value.toString());
}
return LocalDate.parse(value.toString(), formatter);
}
}
Metadata
Metadata
Assignees
Labels
No labels