2010-12-18 6 views
4

In Stringbuilder-Klasse in statischen Kontext Verkettungs ich so tun kann:Java Methodenaufruf

StringBuilder sb = new StringBuilder(); 
sb.append("asd").append(34); 

Verfahren anhängen kehrt String Instanz, und ich kann das continuosly nennen.

Meine Frage ist es möglich, dies im statischen Methodenkontext zu tun? ohne Klasseninstanz

+0

Was meinen Sie mit "In StringBuilder-Klasse" - Sie können die Klasse – Mark

+0

nicht bearbeiten Mit statischem Kontext meinen Sie, etwas wie StringBuilder.append() zu tun? Wenn es darum geht, warum würdest du es tun wollen? – CoolBeans

Antwort

8

Ja. So (ungetestet).

public class Static { 

    private final static Static INSTANCE = new Static(); 

    public static Static doStuff(...) { 
    ...; 
    return INSTANCE; 
    } 

    public static Static doOtherStuff() { 
    .... 
    return INSTANCE; 
    } 
} 

Sie können jetzt Code wie haben.

Static.doStuff(...).doOtherStuff(...).doStuff(...); 

Ich würde jedoch dagegen empfehlen.

+0

INSTANCE muss in diesem Fall statisch sein. –

+0

@Sergey, stimmt, behoben. –

+0

Diese Antwort wird nicht funktionieren. –

2

Wollen Sie das?

public class AppendOperation() { 
    private static StringBuilder sb = new StringBuilder(); 

    public static StringBuilder append(String s){ 
     return sb.append(s); 
    } 

    public static void main(String... args){ 

     System.out.println(AppendOperation.append("ada").append("dsa").append("asd")); 

    } 

} 

vielleicht verstehe ich die Frage nicht (statischer Kontext) richtig

dies tun Sie?

static {

} // natürlich kann man dies tun können, auch

wenn nicht alle oben können Sie auch ohne statische Methode nicht tun, weil append() nicht statisch ist

2

Sie möchten das Builder-Muster auf einem statischen? Nein. Am besten konvertieren Sie Ihre Statik in Instanzen.

5

Dies wird Methode-Verkettung genannt.

Um es zu tun, benötigen Sie immer ein instanziiertes Objekt. Tut mir leid, aber Sie können es nicht in einem statischen Kontext tun, da kein Objekt damit verbunden ist.