2014-09-29 5 views
0

Как я могу идти о создании вложенного класса/метода в Java, так что я могу назвать их так:Вложенный метод в java?

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...); 

вместо комков методов всего класса:

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

+0

Могу ли я не прикасаться к статике? – xea21

+0

Я тебя не понимаю. – TheLostMind

ответ

1

Добавить общедоступные атрибуты в класс SessionManager, а именно Session, Profile, Inventory, каждый из которых указывает на свой класс и переводит ваши методы в классы respecive.

например.

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

и

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

Если вы хотите, сессия может быть статическим внутренним классом вашего SessionManager.

0

На самом деле в Java вложенная метод не представляется возможным, но вы можете сделать так, как показано ниже

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

Я думаю, что это поможет вам !!!!

+0

можно определить классы внутри методов? – Thilo

+1

да, вы можете абсолютно определить классы внутри методов .. !! @Thilo – santhosh

+0

@Thilo Java 8 позволяет, как мне кажется, местные классы. http://docs.oracle.com/javase/tutorial/java/javaOO/localclasses.html – EpicPandaForce

0

Вы можете сделать это следующим образом:

public class Example {  
    public static class InnerClass { 

    }  
} 

После объявления классов, как, что вы можете ссылаться на них, как это:

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

Но Обратите внимание на static модификатором InnerClass? static в этом контексте означает, что InnerClass действует так, как оно было определено в его собственном файле. InnerClass с static не может получить доступ к любым членам 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(); 
     } 
    } 
}