2016-11-21 1 views
0

Nimm zum Beispiel die Klasse JSONObject.Java: Wie man eine Klasse erweitert und eine Punktnotation für ihr Objekt verwendet

Und sagen, ich habe die folgende Methode.

public JSONObject getObjectOrThrow(String name) { 
     JSONObject jsonObject = null; 
     try { 
     jsonObject = JSON.getJSONObject(name); 
     } catch (Exception e) { 
     System.out.println("JSON_ERROR : " + name); 
     e.printStackTrace(); 
     } 
     return jsonObject; 
    } 

Wie erweitere ich die JSONObject so, dass ich wie mit einem Verfahren am Ende werden.

Wo "Name" ist der Schlüssel für den untergeordneten Knoten von "man".

Auch als Referenz, wie heißt das?

+2

Wie ist das mit dem * Erweitern * einer Klasse verbunden? Sie verwenden nicht einmal die Kindklasse. – Tom

+0

@Tom Ok, scheint, ich bin sogar weit weg von der Straße, können Sie mir in die richtige Richtung zeigen? – Relm

+0

Da es momentan (zumindest für mich) unklar ist, was Sie erreichen wollen, kann ich im Moment keine Hinweise geben. – Tom

Antwort

1

Kundenspezifische Klasse

public class CustomJSONObjectProvider extends JSONObject { 
    public JSONObject getObjectOrThrow(String name) { 
     JSONObject jsonObject = null; 
     try { 
     jsonObject = JSON.getJSONObject(name); 
     } catch (Exception e) { 
     System.out.println("JSON_ERROR : " + name); 
     e.printStackTrace(); 
     } 
     return jsonObject; 
    } 

    // all the other custom methods that you want to override 

} 

Und so, wie Sie es verwenden,

CustomJSONObjectProvider customJSONObjectProvider = new CustomJSONObjectProvider(); 
JSONObject jsonObject = customJSONObjectProvider.getObjectOrThrow("name"); 

Es kann auch statisch sein

public class CustomJSONObjectProvider extends JSONObject { 
    public static JSONObject getObjectOrThrow(String name) { 
     JSONObject jsonObject = null; 
     try { 
     jsonObject = JSON.getJSONObject(name); 
     } catch (Exception e) { 
     System.out.println("JSON_ERROR : " + name); 
     e.printStackTrace(); 
     } 
     return jsonObject; 
    } 

    // all the other custom methods that you want to override 

} 

Seine Verwendung

JSONObject jsonObject = CustomJSONObjectProvider.getObjectOrThrow("name"); 
+0

Also muss ich dann ** JSON ** in 'JSON.getJSONObject (name)' an CustomJSONObjectProvider übergeben. Der Grund, warum ich das wollte, war, dass ich das Objekt nie an diese Klasse weitergeben muss. Dachte, die Punktnotation würde das Objekt bekommen, auf das ich mich beziehe. – Relm

+0

@Relm Was ist ein Objekt dort? Sie wollten die Methode erweitern und benutzerdefinierten Code bereitstellen. Was meinst du mit 'Punktnotation wird erhalten, auf welches Objekt du dich beziehst'? – VinayVeluri

Verwandte Themen