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