2014-09-29 94 views
0

我如何去在Java中建立一個嵌套類/方法,這樣我可以打電話給他們這樣的:其實java中的嵌套方法?

SessionManager client = new SessionManager(); 
client.login("user","password", etc...); 
client.profileUpdate("John", "15", etc...); 
client.inventoryAdd("Potato", etc...); 
client.inventoryDelete(15, etc...); 
+1

你正在尋找一個[靜態內部類(http://docs.oracle.com/javase/tutorial/java /javaOO/nested.html)? – TheLostMind 2014-09-29 08:47:45

+0

我可以不碰靜電嗎? – xea21 2014-09-29 08:49:26

+0

我不明白你的意思。 – TheLostMind 2014-09-29 08:50:26

回答

1

將公共屬性添加到SessionManager類中,即Session,Profile,Inventory,這些屬性指向它們自己的類並將您的方法移至相應的類。

例如

public class Session { 
    public void login(...){...} 
} 

public class SessionManager { 
    public Session session = new Session(); 
    ... 
} 

如果你希望,會話可能是靜態內部類的SessionManager的。

0

SessionManager client = new SessionManager(); 
client.session.login("user","password", etc...); 
client.profile.update("John", "15", etc...); 
client.inventory.add("Potato", etc...); 
client.inventory.delete(15, etc...); 

,而不是在短短的類結塊的方法在Java嵌套的方法是不可能的,但你可以這樣做,如下所示

class Sample { 
    void sampleMethod() { 
     class InnerSample { 
      void sampleInnerMethod() { 
      } 
     } 
    } 
} 

我認爲這將幫助你!

+0

我們可以定義方法內的類? – Thilo 2014-09-29 08:54:20

+1

是的,你可以絕對定義方法內的類..! @Thilo – santhosh 2014-09-29 08:56:31

+0

@Thilo Java 8允許本地類,我想。 http://docs.oracle.com/javase/tutorial/java/javaOO/localclasses.html – EpicPandaForce 2014-09-29 09:33:06

0

你可以這樣說:

public class Example {  
    public static class InnerClass { 

    }  
} 

聲明的類一樣,你可以這樣引用它們之後:

Example.InnerClass someInstance = new Example.InnerClass(); 

通知static修改的InnerClass的?在這種情況下,static意味着InnerClass的行爲就像它在自己的文件中定義的一樣。 InnerClassstatic無法訪問任何成員Example或調用Example任何非靜態方法,所以這樣的事情是不可能的:

public class Example { 

    private String someMember; 

    private void someMethod() { 

    } 

    public static class InnerClass { 

     public InnerClass() { 
      // Not possible, would throw a compile time error 
      doSomething(someMember); 
      someMethod(); 
     } 
    }  
} 

如果不申報InnerClass靜態比它實質上成爲一部分Example一個不能獨立存在。換句話說,如果你沒有聲明它是靜態的,你總是首先需要一個Example實例,在這種情況下,你可以創建InnerClass對象。但是不帶靜電有可能從Example訪問Example或調用方法的成員:

public class Example { 

    private String someMember; 

    private void someMethod() { 

    } 

    public class InnerClass { 

     public InnerClass() { 
      // This is now possible. But you cannot create 
      // an independent `InnerClass` instance anymore 
      doSomething(someMember); 
      someMethod(); 
     } 
    } 
}