2014-03-25 21 views
3
public class Demo 
{ 

    public void met(Object d) 
    { 

     class my { 
      public String Work(String s){ 
       return s+",JAVA"; 
      } 
     } 
     d=new my().Work("Hello");//statement 1 
     System.out.println(d);//statement 2 

    } 

    public static void main(String args[]) 
    { 
     new Demo().met(new Object()); 
    } 

} 

我不知道這是之前問與否。在這個類別中Demo我正在創建類my類中的方法

當我把發言1,2它給我的錯誤上課前,但是當我把它下課沒關係。

所以這意味着當我調用方法,類被加載和類文件被創建名爲Demo$1my.class,這樣如果我把語句1和2放在課後它的作品。是這樣嗎?

我的問題是,我可以創建主要方法和如何my類的對象?

+0

命名約定是混亂.. – Maroun

+0

道歉說。的[使用類定義的Java中的一個方法裏面] –

+0

可能重複(http://stackoverflow.com/questions/2428186/use-of-class-definitions-inside-a-method-in-java) – Djizeus

回答

3

我可以創建主要方法和如何我的課的對象?

不,只有met方法知道關於該類的任何內容。如果您想在該方法外使用該類,則應將其聲明爲Demo內的嵌套類,或者將其聲明爲完全獨立的非嵌套類。

我個人會盡量避免嵌套類 - 他們有奇怪的限制,你通常最終會創建內部類而不是嵌套類,通過意外忘記static修飾符,他們通常是一個痛苦。

+2

爲什麼會有人有一個類*內*方法?特別是當它不是*匿名* .. – Maroun

+2

@MarounMaroun:我已經精確地使用了它*一次*我記得 - 當我想聲明一個特定的異常,然後在回調中使用,然後捕獲該特定的異常。 –

+0

我只是好奇,爲什麼你沒有在方法外部聲明類*?你能舉一個這樣的小例子嗎?我真的很想知道什麼時候最好有一個類*內部的方法。 – Maroun