2014-09-30 108 views
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

通过您的代码行会林:

  }else if (loClase == (Double.class)){ 
       psLinea.append(JFormat.msFormatearDouble((Double)loValor, JFormat.mcsDOUBLENOCIENTIFICO).replace(',', '.')); 
      } else if (loClase == (byte[].class)){//para los binarios 

你使用:loClase ==(Double.class),它不会编译我(甚至JDK 1.6)。

,你可以尝试以下方法:使用源

  }else if (loClase instanceof Double){ 
       psLinea.append(JFormat.msFormatearDouble((Double)loValor, JFormat.mcsDOUBLENOCIENTIFICO).replace(',', '.')); 
      } else if (loClase instanceof byte[])){//para los binarios 
+0

流明/二进制格式:1.4和Java平台的JDK 1.6,我得到的错误只在“否则,如果(loClase ==(字节[]类) )“行,它显示为提示”lambda表达式在这里不期望,糟糕的操作数类型'=='第一类第二类“ – AMB 2014-09-30 08:45:18

+1

奇怪..我想lambda表达式与JDK 1.8一起来。 - 也许原因是另一台jdk版本在其他计算机上? – KnusperPudding 2014-09-30 08:50:37

+0

我刚刚想通了,如果我删除“()”它的工作原理,就像这样: }否则,如果(loClase == byte.class) 现在,我真的不明白 顺便说一下电脑都JDK 7和JKD 6只有 – AMB 2014-09-30 09:10:13

相关问题