2015-06-15 123 views
-4

我要訪問像開放所有功能),SSC(和bind()以及我要訪問的功能變量在同一類的不同功能

public void createSocket() 
{ 
    ServerSocketChannel ssc = null; 
}  
public void openSocket() throws IOException 
{ 
    ssc = ServerSocketChannel.open(); 
}  
public void bind()  
{ 
    ssc.socket().bind(new InetSocketAddress(8888)); 
    ssc.configureBlocking(false); 
}` 
+0

@Odedra無論是什麼?它已被回答,並且真的不需要更多這種東西。 – laune

+0

我認爲解決方案是閱讀您的教學文本。這是一個基本的發展宗旨,所關心的是你花費了零時間學習,而不是在你的「學習」體驗中詢問每個基本問題。 – KevinDTimm

回答

1

由於scc被聲明爲一個局部變量它不能用其他方法訪問。它需要在課堂上進行宣佈。

public OuterClass { 
    private ServerSocketChannel ssc = null; << Class level declaration 

    public void createSocket() 
    { 
     ssc = null; 
    }  

    public void openSocket() throws IOException 
    { 
     ssc = ServerSocketChannel.open(); 
    }  

    public void bind()  
    { 
     ssc.socket().bind(new InetSocketAddress(8888)); 
     ssc.configureBlocking(false); 
    } 
} 
0

你應該把它定義爲一個全局變量不是本地的createSocket()你將只能使用它在createSocket()範圍你現在定義方式。你需要使它成爲一個class級別的變量。

0

因此,在定義這些方法的類範圍中定義它。例如:

public class MySocketClass { 

    private ServerSocketChannel ssc; 

    public void createSocket() { 
     // this method now seems redundant; consider replacing this functionality 
     // in the default constructor for this class 
     ssc = null; 
    } 

    public void openSocket() throws IOException { 
     ssc = ServerSocketChannel.open(); 
    } 

    public void bind() { 
     ssc.socket().bind(new InetSocketAddress(8888)); 
     ssc.configureBlocking(false); 
    } 
} 

然後你可以參考他們如:

MySocketClass msc = new MySocketClass(); 
msc.openSocket(); 
msc.bind();