0
我有这样的代码在JDK 1.6编译,它工作在一台电脑,但显示错误在另一个不好操作类型为二进制运算符“==”
public static void rellenarLinea(final StringBuffer psLinea, final ResultSet rs, final int plNumberOfColumns, final JDateEdu poDateEdu, final ResultSetMetaData rsmd) throws java.sql.SQLException {
rellenarLinea(psLinea, rs, plNumberOfColumns, poDateEdu, rsmd, false);
}
/**
* rellena psLinea, en funciona de la fila actual del ResultSet
* @param psLinea buffer de la libea
* @param rs resulset posicionado
* @param plNumberOfColumns numero de columnas
* @param poDateEdu Objeto dateEdu instanciado(da igual el valor)
* @throws SQLException excepcion
*/
public static void rellenarLinea(final StringBuffer psLinea, final ResultSet rs, final int plNumberOfColumns, final JDateEdu poDateEdu, final ResultSetMetaData rsmd, boolean pbSiempreBorrarEspaciosFinal) throws java.sql.SQLException {
Object loValor;
Class loClase;
int lTipo = -1;
Calendar c = Calendar.getInstance();
//se crea la linea
psLinea.setLength(0);
for (int i = 1; i <= plNumberOfColumns; i++) {
loValor = rs.getObject(i);
lTipo = rsmd.getColumnType(i);
//comprobamos si es nulo
if (loValor != null){
//para formatear correctamente la fecha
loClase = loValor.getClass();
if((loClase == java.sql.Date.class) ||
(loClase == java.util.Date.class) ||
(loClase == java.sql.Time.class) ||
(loClase == java.sql.Timestamp.class)){
//anadimos ano,mes,dia
if ((loClase == java.sql.Date.class) ||
(loClase == java.util.Date.class) ||
(loClase == java.sql.Timestamp.class)){
c.setTime((java.util.Date)loValor);
poDateEdu.setDate(c);
}
//anadimos hora,minuto,segundo
if(loClase == java.sql.Time.class){
c.setTime((java.sql.Time)loValor);
}
if(loClase == java.sql.Timestamp.class){
c.setTime((java.sql.Timestamp)loValor);
}
poDateEdu.setHora(c.get(c.HOUR_OF_DAY));
poDateEdu.setMinuto(c.get(c.MINUTE));
poDateEdu.setSegundo(c.get(c.SECOND));
psLinea.append(poDateEdu.toString());
}else if (loClase == Boolean.class){
if(((Boolean)loValor).booleanValue()){
psLinea.append(JListDatos.mcsTrue);
}else{
psLinea.append(JListDatos.mcsFalse);
}
}else if (loClase == (Double.class)){
psLinea.append(JFormat.msFormatearDouble((Double)loValor, JFormat.mcsDOUBLENOCIENTIFICO).replace(',', '.'));
} else if (loClase == (byte[].class)){//para los binarios
String lsResult=new String((byte[])loValor);
if(lsResult.indexOf(JFilaDatosDefecto.mccTransparentacionCambioLinea10)>=0 ||
lsResult.indexOf(JFilaDatosDefecto.mccTransparentacionCambioLinea13)>=0 ||
lsResult.indexOf(JFilaDatosDefecto.mccSeparacion1)>=0 ){
throw new SQLException("Uso de caracteres no validos en el campo " + rsmd.getColumnName(i));
}
psLinea.append(lsResult);
}else {
// if(lTipo==java.sql.Types.CHAR || lTipo==java.sql.Types.NCHAR){//los char siempre tienen muchos espacios al final q los anade la BD
if(lTipo==1 || lTipo==-15 || pbSiempreBorrarEspaciosFinal){//los char siempre tienen muchos espacios al final q los anade la BD
psLinea.append(rTrim(loValor.toString()));
}else{
psLinea.append(loValor.toString());
}
}
}
psLinea.append(JFilaDatosDefecto.mccSeparacion1);
}
}
编译器显示错误操作数类型二元运算符“= =”在 “否则,如果(loClase ==(字节[]类))” 行
任何帮助将感激,谢谢提前
PS。使用JDK 1.6编译此
流明/二进制格式:1.4和Java平台的JDK 1.6,我得到的错误只在“否则,如果(loClase ==(字节[]类) )“行,它显示为提示”lambda表达式在这里不期望,糟糕的操作数类型'=='第一类第二类“ –
AMB
2014-09-30 08:45:18
奇怪..我想lambda表达式与JDK 1.8一起来。 - 也许原因是另一台jdk版本在其他计算机上? – KnusperPudding 2014-09-30 08:50:37
我刚刚想通了,如果我删除“()”它的工作原理,就像这样: }否则,如果(loClase == byte.class) 现在,我真的不明白 顺便说一下电脑都JDK 7和JKD 6只有 – AMB 2014-09-30 09:10:13