2014-09-30 105 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

相關問題