トップページtech
20コメント5KB

staticメソッドを使うメリット

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさんNGNG
を教えて下さい。
マルチスレッド、例えば、servletから
staticメソッドとして定義された入力チェックなどを使うやり方は
普通なのでしょうか?

又、マルチスレッドに限らず、staticメソッドを使うメリット、
使う場合の注意点、或いは、staticメソッドを使わなかった場合の
デメリットなどありましたら、ご教示下さいませ。
0002デフォルトの名無しさんNGNG
staticメソッドはJavaの欠陥の証明です。
0003デフォルトの名無しさんNGNG
staticメソッドがあるなんてjavaは変な言語ですね。

   とJハウスで言ってみるとよいかもしれません。
0004名無しさんNGNG
なんだみんな知らないのか。
0005デフォルトの名無しさんNGNG
アプレットではstaticは絶対に使っちゃいけません。
0006名無しさん@お腹いっぱい。NGNG
一つのVM環境上で、一個しかない事が保証されてるんだから
アプレットだろうがなんだろうが使い道が無い事はないと思うが。

お約束事を知らないで不用意に使って「バグだ!」とかいってる奴
痛すぎ。
0007名無しさんNGNG
static 変数じゃなくて、staticメソッドも使っちゃだめなの?
0008デフォルトの名無しさんNGNG
将来のためにのこしておいたんだろ、リアルタイムOS向けとか。
0009名無しさんNGNG
あの〜、いまやってるプロジェクトのメンバーって、
staticメソッド作りまくりなんですえけど、いいんですかね?
0010デフォルトの名無しさんNGNG
staticメソッドのなにが問題なの?
0011デフォルトの名無しさんNGNG
この板住人の頭が問題なのです。
0012デフォルトの名無しさんNGNG
static 使わずに Singleton モデルはどーやって実現するの?
0013デフォルトの名無しさんNGNG
クラスに属するメソッドがstaticメソッドなんじゃないの?
0014デフォルトの名無しさんNGNG
>9
クラスがインスタンスフィールド使わないのなら一向に構わん。
ただ、そんなクラス意味あるのか?OOP分かってないで、
Cを良く分かっているなら、無理してJava使わなきゃ良いと思うが。
0015デフォルトの名無しさんNGNG
Servletは、一度起動するとHTTPDからリクエストが有るたびに
あたらしい「Thread」を作ってそこで処理するので、
結局同じVM環境上のマルチスレッドとして動く。
だから全てのリクエストが「メモリ上で同一の」staticメソッド
なりフィールドなりを見に行く事になるとおもうんだが。
(CGIのようにHTTPDからのリクエストが有るたびに新しい「プロセス」
を生成する場合、プロセスは独立してるのでそのプロセス内で
staticであるだけになる。リクエストを超えてデータをやり取りするなら
共有メモリだのファイルだのを使うしかない。ただ普通はそんなことを
する必要ないだろうけど。)

それが問題になるのかテクニックになるのかは実装者の脳みそ
に依存するんじゃないかな?
0016デフォルトの名無しさんNGNG
>staticメソッド作りまくりなんですえけど、いいんですかね?

クラスがぜんぜんわかってない人がよくやるコーディングパターン?
0017デフォルトの名無しさんNGNG
>>15

メモリ上で同一のメソッドを見に行くことになったとしても、
そのメソッド(staticメソッド)の中でstatic変数を使っていなければ、
処理がスレッド間で混ざってしまうことはないんですよね?

ただ、メモリ上で同一となると、syncronaizedとまではいかなくとも、
待たされたりすることになるのでしょうか?
001815NGNG
>17
良く分からんが、可能性としてstaticメソッド内のローカル変数や
引数のコピーを保存して置く場所が危なそうだけど。

つうか、そんな事が気になるならはじめからインスタンスメソッド
使いなさいよ。
0019デフォルトの名無しさんNGNG
本当にオブジェクト指向が身についた上で static が活用できるように
なるとまた世界が広がりますよ。
安易に static にする前に、本当に static が必要なのかということを
よく考えて、慎重に使いましょう。
0020デフォルトの名無しさんNGNG
sage
■ このスレッドは過去ログ倉庫に格納されています