我正在接触 Java,并用 Java 为 Talend 例程编写一些代码。该例程将用作用户定义的函数来检查列数据是否具有分隔符,如果是,则拒绝该行,如果没有,则传递该行。
public class CheckDelimiter {
public static boolean checkDelimiter(String inputData,String delimiter) {
if (inputData.contains(delimiter)) {
return false;
} else {
return true;
}
}
}
当将其用作用户定义函数时,会出现布尔值无法转换为字符串的错误。在传递 Talend tmap 时,我给予
CheckDelimiter.checkDelimiter(columname,"|")
。
我在这里做错了什么?
“...当将其用作用户定义函数时,会出现布尔值无法转换为字符串的错误。在传入 Talend tmap 时,我给出
。CheckDelimiter.checkDelimiter(columname,"|")
我在这里做错了什么?”
提供的代码可以正常运行。
您描述的错误发生在将 boolean 值分配给预期 String 值的位置时。
例如。
String s = true;
java: incompatible types: boolean cannot be converted to java.lang.String
考虑到您的 checkDelimiter 方法返回一个 boolean 值,我想您在其他地方错误地应用了它。
您可以采取一些措施来解决此问题。
将返回值包装在 String#valueOf 或 Boolean#toString 调用中。
String s = String.valueOf(CheckDelimiter.checkDelimiter(columname,"|"));
String s = Boolean.toString(CheckDelimiter.checkDelimiter(columname,"|"));
或者,使用 Boolean 类作为返回类型,它提供了 toString 方法。
public static Boolean checkDelimiter(String inputData,String delimiter)
String s = CheckDelimiter.checkDelimiter(columname,"|").toString();
或者最后,将 checkDelimiter 的返回值调整为 String。
public static String checkDelimiter(String inputData,String delimiter) {
if (inputData.contains(delimiter)) {
return String.valueOf(false);
} else {
return String.valueOf(true);
}
}
最后一点,您可以将条件语句减少为单个返回。
public static boolean checkDelimiter(String inputData,String delimiter) {
return !inputData.contains(delimiter);
}