2014-09-29 116 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(); 
     } 
    } 
}