2012-04-10 61 views
1

我看到許多使用BufferedReader作爲靜態成員而不是實例成員的Java示例。這是否是一些最佳做法?什麼時候應該或不應該這樣做?靜態BufferedReader與System.in

+2

請問我可以看到一些這樣的例子嗎?沒有這樣的約定。 – 2012-04-10 03:14:20

+0

在你使用它之後,使一個需要關閉的對象(比如'BufferedReader')'static'成爲一個非常糟糕的主意。 – trutheality 2012-04-10 03:55:32

回答

0

我發現BufferedReader與System.in一起使用時不應該關閉的情況;因爲在這種情況下,Java不允許重新打開它。在這種情況下,將此屬性聲明爲靜態是有意義的。

0

我不認爲這是一種使BufferedReader成爲靜態成員的標準。這取決於你想要的行爲。如果它在某種需要以靜態方式訪問其字段的Util類中,則將其設置爲靜態。否則,我認爲將它作爲一個實例或更好的方法級變量沒有任何壞處。

例如,穆勇金,誰一般在春,Hibernate和Java寫的教程的,提供了他在非靜態的方式訪問BufferedReaderthis例子。

0

我會假設靜態用於比任何事情更清晰。我不知道有哪個標準說這樣或那樣做會更好。我想這取決於你需要以這種方式訪問​​它的頻率和原因。

2

這是一些最佳實踐嗎?

當然不是。相反它會在大多數情況下被認爲是最差的做法。靜態成員需要非常小心使用;成員只有在真正需要時才應該是靜態的,經過適當的分析。

+0

我認爲這些作者只是通過使用一些實用程序的靜態例程來進行快捷操作,以便從'static void main'訪問BufferedReader。 – 2012-04-10 04:17:54

+0

@AsadIqbal沒有看到有關的代碼,我不在乎推測。 – EJP 2012-04-10 04:23:44