2014-05-20 10 views
11

Perché sto ricevendo un errore "usa operazioni non controllate o non sicure" ogni volta che compilo? Cosa c'è che non va nel codice? Ho copiato il codice esattamente lo stesso da questo tutorial http://www.mkyong.com/java/json-simple-example-read-and-write-json/"utilizza operazioni non controllate o non sicure"

import java.io.FileWriter; 
import java.io.IOException; 
import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 

public class JsonSimpleExample { 
    public static void main(String[] args) { 

    JSONObject obj = new JSONObject(); 
    obj.put("name", "mkyong.com"); 
    obj.put("age", new Integer(100)); 

    JSONArray list = new JSONArray(); 
    list.add("msg 1"); 
    list.add("msg 2"); 
    list.add("msg 3"); 

    obj.put("messages", list); 

    try { 

     FileWriter file = new FileWriter("c:\\test.json"); 
     file.write(obj.toJSONString()); 
     file.flush(); 
     file.close(); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    System.out.print(obj); 

    } 

} 
+3

Questo è un avviso, non un errore. Non importa davvero. Da che linea proviene? –

+1

Sembra che la libreria 'org.json.simple' non sia generica. La classe 'JSONArray' estende un' ArrayList' non parametrizzato, che probabilmente è da dove provengono gli avvertimenti. –

risposta

23

L'avvertimento uses unsafe or unchecked operations viene visualizzato quando si esegue codice che il compilatore Java considera essere privo di controllo degli errori, o potenzialmente non sicuri in qualche modo. Tuttavia, si tratta di un avvertimento, non di un errore e non impedirà la compilazione del codice: i progetti di grandi dimensioni spesso emetteranno un avviso dopo l'avviso e sarai libero di determinare se valga la pena di agire o meno. Se vuoi approfondire ciò che sta causando l'attivazione dell'avviso, puoi ricompilare il tuo file .java con la sintassi javac -Xlint:unchecked yourfilename.java e il compilatore ti darà più informazioni dettagliate su cosa sta causando esattamente l'errore.

Nella mia esperienza, questo avviso può spesso essere causato dall'utilizzo di qualcosa come un ArrayList senza specificare il tipo che dovrebbe aspettarsi di tenere (cioè utilizzando ArrayList a = new ArrayList() anziché ArrayList<String> a = new ArrayList<String>()). Il compilatore, nel mio esempio, ti avverte che il tuo codice non controllerà che i valori che aggiungi ad esso siano di un tipo particolare. In un'applicazione di produzione, sarebbe probabilmente opportuno specificare i tipi, ma in un'applicazione di test, sei libero di ignorare gli avvisi se non sei preoccupato per loro.

Problemi correlati