我用Java編寫了一個小型HTTP服務器,並且遇到了將靜態變量(服務器配置:端口,根等等)傳遞給處理請求的線程的問題。我不想讓我的線程修改這些變量,如果它擴展了服務器類,它也會繼承我不想要的方法。將靜態字段傳遞給線程
由於性能原因,我不想使用getter。如果我使靜態成員最終,我將有一個問題時,從配置文件加載它們的值。
這裏是一個例子
class HTTPServer {
static int port;
static File root;
etc..
....
//must be public
public void launch() throws HTTPServerException {
loadConfig();
while (!pool.isShutdown()) {
....
//using some config here
...
try {
Socket s = ss.accept();
Worker w = new Worker(s);
pool.execute(w);
}catch() {...}
}
}
private void loadConfig(){ //reading from file};
...
other methods that must be public goes here
}
我也不想有工人爲嵌套類。它在另一個包...
你有什麼建議?
先對它進行正確的編碼(即使用getters和所有內容),稍後可能會擔心性能。 – biziclop 2012-04-18 21:30:02
這些應該是'HTTPServer'的常規非靜態final字段,作爲構造函數參數傳入。另外,不要過早優化 - 除非另有分析,否則獲得者幾乎不需要花費任何代價。 – 2012-04-18 21:46:10
在我看來,你問我們如何使它完全混亂的指針。 – 2012-04-18 22:02:18