[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 07/25 18:09 / Filesize : 271 KB / Number-of Response : 1055
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

☆★Java質問・相談スレッド173★★



1 名前:デフォルトの名無しさん mailto:sage [2015/04/22(水) 22:35:19.67 ID:XG+QDGZC.net]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    pc11.2ch.net/hp/
Webプログラミング pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 (p)ttp://www.wikiroom.com/java/?path,classpath
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※

質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。

前スレ
★★Java質問・相談スレッド172★★
peace.2ch.net/test/read.cgi/tech/1419490897/

78 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 12:47:34.53 ID:XY0F0CkV.net]
そもそも、使用するクラスが、シングルトンでマルチスレッド対応してないとnewばかりすることになって重くなって駄目だけどね。

まあ、逃げたくなってくるわな。

79 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 13:16:08.00 ID:kplqX2qa.net]
>>77
なに言ってんだこいつ

80 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 14:22:42.80 ID:XY0F0CkV.net]
>>78
言ってる意味が分からないなら、Java終わっとる。

81 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 15:38:06.87 ID:tatd8m3J.net]
分からん
[解釈1] クラスがシングルトンであり、かつ、マルチスレッドに対応していない(or対応してる)
→シングルトンならnewできないので矛盾
[解釈2] クラスがシングルトンでなく、かつ、マルチスレッドに対応していない
→newすればマルチスレッドに対応できるクラスは即ちマルチスレッド対応なので矛盾

82 名前:80 mailto:sage [2015/04/30(木) 15:44:41.95 ID:tatd8m3J.net]
ああ、書いてから気付いたけど、インスタンスがスレッドセーフかどうかを
マルチスレッド対応の基準として定義(複数インスタンスを作って別のスレッドで使うのは問題ない)すれば、
解釈2で意味が通るのか
これで正解?

83 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 15:46:51.27 ID:tFMwWIJd.net]
馬鹿を相手にするだけ無駄

84 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 15:49:21.61 ID:AQ41eVqd.net]
わからん
ブロックしないからタイミングによっては、インスタンスが複数できるってことかな。
でもサーブレットなら、最初のリクエストがインスタンス生成するまでの間だけでnewばかりにならないよね。
そんなリクエスト多い時に再起動でもするのかな。
しかも最初のインスタンスは参照なくなるから、消えるものかも知れないよね。何がそんなに重いんだろう。重ければすぐ気付けるし、問題なさそうだ。

85 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 16:58:02.38 ID:/MKjDc8q.net]
なに言ってるのか全然わからんな
新しいインスタンスを作るのはなるべく避けてスレッドセーフなシングルトンに
するべきってことを言ってる?

86 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 19:23:23.10 ID:LQ/wqWPzk]
g.drawStringが反映されなく悩んでいます(正確にはg.〜全てが)
元々ソースコードが長くなってきたため分割できないかとググったらクラスを使い分割できるとあったので挑戦してみました
paintaは分割前のソースコード内でクラス化した状態で表示されたのを確認しています
ファイル名SampleData.java
package hoge;
import fuga;
public class SampleData extends Canvas2 {
SampleData(int v){
super(v);
}
Graphics g = getGraphics();
public void paint(Graphics g) {}
public SampleData () {}
public int painta (int a) {
int x = a;
g.setColor(Graphics.getColorOfName(Graphics.RED));
g.drawString("test(painta)" , 10 , 100);
return x;
}
}
書籍やサイトを便りにいろいろ試して
やっとコンパイルが通るようになりましたが
エラーは出ませんがg.drawStringが反映されないため画面に何も表示されません
・なぜ表示されないか
・ソースコードの分割としてこの書き方はどこがいけないか

javaには朗報?
米Microsoft、iOSやAndroidアプリをWindowsアプリ化できる新SDK
今回開発者向けに発表されたSDKは、「Webサイト」「.NETおよびWin32」「Android(Java/C++)」「iOS(Objective C)」の4種類で、アプリの既存コードをベースに、Windowsストアのユニバーサルアプリを制作できる。



87 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 22:01:38.89 ID:u4a/i5d8.net]
>>84
サーブレットの処理の途中で使うクラスは、内部的にはシングルトンの方が良いだろ。
性能上げたい場合は、スレッド増やして待ち合わせれば良いし。

アクセス数が増えた時に性能となって現れる。

88 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 22:03:39.52 ID:Sh0aGYP5.net]
>サーブレットの処理の途中で使うクラスは、内部的にはシングルトンの方が良いだろ

へー
そう妄想する根拠ぐらい書いたらどうだ

89 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 22:04:06.99 ID:u4a/i5d8.net]
javaなんて使うより、node.jsにしてマルチプロセスにした方が気が楽だと思うけどね。

90 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 22:11:54.55 ID:u4a/i5d8.net]
今はPM2とかredisとかあるし、すごく楽になってる。

91 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 22:16:20.00 ID:kteIyMJw.net]
馬鹿と馬鹿で盛り上がりw

92 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 22:46:41.83 ID:u4a/i5d8.net]
単体テストでマルチスレッドの、テストやるべきだと思うけど、どうよ?

93 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 23:00:05.34 ID:AQ41eVqd.net]
>>91
必要ならやれよ。
必要ないならコストかけんなよ。

94 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 23:00:06.98 ID:u4a/i5d8.net]
クラスの定義書にも、スレッドセーフがどうかの記述が欲しいし。

95 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 23:06:51.88 ID:u4a/i5d8.net]
Java8で並行ストリーム使えるようになっちから、さらに重要になるな。

96 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 23:07:51.66 ID:kteIyMJw.net]
馬鹿は気にせんでよろし



97 名前:デフォルトの名無しさん mailto:sage [2015/04/30(木) 23:16:10.30 ID:u4a/i5d8.net]
>>92
ソフトにコストとか関係ないし。

98 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 00:04:40.11 ID:WFSf5HfO.net]
クラスの定義書w

99 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 00:40:41.90 ID:5OsBEZuX.net]
>>96
ノーコストでテストできるの?
すごいね!

100 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 00:57:42.01 ID:ceZ5f6sY.net]
1こづつなら
ArrayListで保存できます
では1つのlong変数を保存するときどうやったらいんですか?

1、2,3,4とやるとそれぞれの順番の
2つのペアの双方がとれるようにしたい

101 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 00:58:36.03 ID:ceZ5f6sY.net]
2つのlong変数です

new long[][]

ArrayList<long[][]>

っていうやりかたはかっこわるいですか?

102 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 01:14:05.59 ID:FhMIHRkt.net]
>>100
Javaはクラスベースのオブジェクト指向言語だから、

2つのlong変数をメンバーに持つクラス LongPair を定義して、

class LongPair {
 public long longA;
 public long longB;
}

それを他の場所で使うところで

ArrayList<LongPair> list = new ArrayList<>();

とかやって呼び出して使うのが「らしい」かな。

まあ、オブジェクト指向的な設計方法なので、慣れないうちは、発想できなくとも仕方がない。

103 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 01:16:41.62 ID:Fqv7I7fh.net]
小学生の日本語みたい
ハンディキャップ持ってそう

104 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 01:43:25.42 ID:F6BqBnaC.net]
>Javaはクラスベースのオブジェクト指向言語

クラスベース
っていう言葉を使ってみたかった

105 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 02:34:14.89 ID:UKdd3lbg.net]
>>100 はいどうぞ。
import java.util.AbstractMap.SimpleEntry;
import java.util.ArrayList;
...
ArrayList<SimpleEntry<Long,String>> arr = new ArrayList<>();
arr.add( new SimpleEntry<>( 10L, "Hello" ) );
arr.add( new SimpleEntry<>( 666L, "World" ));
arr.add( new SimpleEntry<>( 999L, "End" ));
System.out.println(arr.get(0).getKey());
System.out.println(arr.get(2).getValue());

車輪を再発明する必要はない

106 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 03:10:02.28 ID:gQdwZtFs.net]
2つのlong変数だからLongPairっていうのは
オブジェクト指向を愚弄している。
しかし二つの変数を覚えるためにマップのエントリーを持ち出すチキガイには敵わない



107 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 03:33:39.21 ID:dc8dj3Ft.net]
マップのエントリー持ち出すってのは
箸の代わりにえんぴつ2本を使って食事するみたいなもんだな

108 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 03:43:09.05 ID:FhMIHRkt.net]
>>105
命名にいちいち丹精込めてられるかよ。
今は>>100に一つの主旨を伝達するのが目的。

>>104みたいな、絶対に伝わらんレベルの相手に、自己満回答するの見てわかったようにね。

109 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 04:49:21.84 ID:qjfm/az+.net]
>>98
フィールドに変数置いた時点で、スレッドセーフのテストをやるべきでしょ。

コストで逃げるのは無責任。

110 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 08:26:48.01 ID:xlHiidVT.net]
ドカタに責任追求すんなよ
仕様もマトモに満たさないんだから
ボクのパソコンでは動きました

111 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 11:14:52.92 ID:5OsBEZuX.net]
>>108
趣味たけてやってるやつはいいな。

112 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 11:37:15.81 ID:/JhMC04n.net]
jQueryや iPhone等の単語をクラス名の先頭に使う場合、大文字小文字どうしてますか?

113 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 12:15:10.38 ID:hlalZqNG.net]
>>110
webアプリで使えることが保証されてない、部品に何の意味があるのかと。

114 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 12:16:47.73 ID:hlalZqNG.net]
バッチならスレッドセーフじゃなくても良いけど。

バッチ専用www。

115 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 12:45:39.64 ID:5OsBEZuX.net]
>>112
使わないことが保証されてるとかもあるんだよ。
最近、マルチスレッドを理解して、誰かに話したかったのかなー

116 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 13:29:13.83 ID:WFSf5HfO.net]
>>112
状態を持たなければいいだけの話。
逆に、状態を持つオブジェクトならスレッドセーフな設計にするより都度インスタンス化したほうがいいでしょ。



117 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 13:32:46.15 ID:7K8JNkP3.net]
>>112
キチガイでwebしか脳が無いオマエには価値がないのかもな

118 名前:デフォルトの名無しさん [2015/05/01(金) 13:56:18.19 ID:werns+CW.net]
Java8がインストールできなくて7はできたデス!
8インストールするにはどうしたらいいデース?

119 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 14:08:02.83 ID:hlalZqNG.net]
>>115
それだけで済むはずがない

120 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 14:14:55.31 ID:97GggSGT.net]
>>117
インストールできたと思われるものをすべてアンインストールしてプログラミングのことは諦めよう

121 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 14:23:50.17 ID:HxX2ojlD.net]
8インストールした後に7インストールしてJAVA_HOME上書きされただけでしょ

122 名前:デフォルトの名無しさん [2015/05/01(金) 14:52:25.04 ID:werns+CW.net]
よくわかんないけどJava7使ってマース!

123 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 15:59:47.54 ID:5OsBEZuX.net]
できないとか、できるとか、なんで主観でしか物を言わないんだ。

124 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 16:00:48.57 ID:zDZULSSe.net]
LinuxのCUIコンソールやWindowsのコマンドプロンプトからJavaアプリケーションを起動した際に、そのコンソールに表示される文字列長や行数を取得するにはどうすればいいのでしょうか。

125 名前:デフォルトの名無しさん mailto:sage [2015/05/01(金) 19:55:10.24 ID:UKdd3lbg.net]
wcコマンドで済む話ではないの?

126 名前:デフォルトの名無しさん mailto:sage [2015/05/02(土) 09:32:45.89 ID:eWVxg4yO.net]
JAVAのBRONZEって自宅でオンラインで受けられるってことは
参考書カンニングできるの?



127 名前:デフォルトの名無しさん mailto:sage [2015/05/02(土) 10:39:58.02 ID:5+kdHKSu.net]
真板でやれよ

128 名前:デフォルトの名無しさん mailto:sage [2015/05/02(土) 15:07:13.78 ID:jUtO03f6.net]
java.time.format.DateTimeFormatter#ofPatter って存在するのでしょうか?
https://ideone.com/LD7Q3I

docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ofPattern-java.lang.String-
どうやってもこれを呼び出せない‥おっかしーなー

129 名前:デフォルトの名無しさん mailto:sage [2015/05/02(土) 15:07:50.52 ID:jUtO03f6.net]
失礼
java.time.format.DateTimeFormatter#ofPattern です.

130 名前:デフォルトの名無しさん mailto:sage [2015/05/02(土) 15:30:08.44 ID:nszzo0zn.net]
>>127
ideone.com/zdBCFX

staticメソッドだからnewが余分やね

131 名前:デフォルトの名無しさん mailto:sage [2015/05/02(土) 15:38:16.26 ID:nszzo0zn.net]
あとyyyy/MM/ddだと2015/5/2のparseに失敗するね
yyyy/M/dにしたらparse出来る

2015/05/02だったらyyyy/MM/ddでparse出来る

132 名前:デフォルトの名無しさん mailto:sage [2015/05/02(土) 16:28:55.75 ID:jUtO03f6.net]
>>129
>>130
ありがとうございます!確認できました。
インスタンスメソッドじゃない方だったんですね、javac のエラーメッセージの読み方が今やっとわかりました
まだまだ初学者ですが、これからもよろしくお願いいたします m(_ _)m

133 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 03:54:46.48 ID:AX1fII9R.net]
最近Javaの勉強をし始めました
CUIでRPGのようなものを作りながらやっています
全モンスター(武器でもアイテムでも何でも)リストを表示したいのですが、

List<Monster> monsters = new ArrayList<Monster>(Arrays.asList(new モンスターA,new モンスターB,new モンスターC,…));

とやっていけば全モンスターが入っているリストは完成しますし、あとは簡易for文でも回せば表示は出来ます
モンスターを追加するときも、クラスを作ってここだけを変更すれば他のところを全くさわらなくても大丈夫な気もします
でも、何か分からないけど何かが違う気がします
何かをリスト化するときにもっと良い方法はありますか?

134 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 04:27:58.29 ID:5I8c2lfE.net]
まーた棒人間RPGの奴か

135 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 06:42:20.63 ID:a1Nd+3H1.net]
データベースを使う(白目)

136 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 09:28:29.17 ID:LDSjGwbx.net]
棒人間のRPGの人です。
>>132は違う人です。



137 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 10:11:18.45 ID:PDSHhx++.net]
>>132
設定でどのクラスを追加するか指示する。
メタプログラミングで特定のパッケージのあるインターフェースを実装したクラスを全て追加する。

138 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 10:17:22.82 ID:40ee8aRr.net]
オブジェクト指向の学習に励んでるところ悪いけど、
モンスターの種類ごとにクラス作るなんて普通やらないよ
ちゃんと仕様さえ決めれば、データが違うだけでほとんど一緒だ

139 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 20:39:08.34 ID:hIDbeKPv.net]
Cliborってソフト定型にSystem.out.println();とかtry{Thread.sleep();}catch(InterruptedException e){}を入れておくと凄く便利。

140 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 20:45:11.70 ID:40ee8aRr.net]
>>138
いやEclipseのスニペット使えばいいでしょ

141 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 20:48:49.35 ID:hIDbeKPv.net]
>>139
Eclipseってそんな機能あるんだ。
NetBwans使ってるから知らなかった。

Eclipse使ったほうがいいのかな?

142 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 20:52:04.14 ID:40ee8aRr.net]
>>140
NetBeansにもその程度の機能は当然ある
あと、定型句コピペの使用は極力避けて
決まったコードはメソッドにすることを心がけた方がいいよ

143 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 20:53:54.18 ID:ScRGBqdT.net]
>>137
モンスター毎にスペシャルな処理を実装する気満々なんじゃ

144 名前:デフォルトの名無しさん [2015/05/04(月) 20:56:26.06 ID:TjfyY4D6.net]
>>142
dqnplus.6

145 名前:.ql.bz/cgi-bin/img-box/img20111121211956.jpg []
[ここ壊れてます]

146 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 21:02:29.19 ID:hIDbeKPv.net]
>>141
面倒な例外処理などはメソッドとして作っておけばいいと言う事ですか?
あと気になっていたんですがThread.sleep()ってどのような例外が発生するんですか?



147 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 21:15:39.45 ID:40ee8aRr.net]
>>144
他のスレッドからinterruptすることでsleepを中断させることができる
その際にInterruptedExceptionが発生する
メソッドを作るのはいいが、安易に例外を握り潰すと後でデバッグしづらくなって地獄を見る

148 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 21:23:31.06 ID:hIDbeKPv.net]
>>145
と言う事は通常使う分には問題ないと言う事ですね。ループの途中で呼び出されました警告も基本無視で良さそうですね。
例外は基本的に何らかの処理をしたほうがいいと言う事ですか?
System.out.println(e);だけだとマズいでしょうか?

149 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 21:50:53.40 ID:/90islqK.net]
自動テストって、どんな事を書けばいいの?

Exceptionをハンドルして、例外をファイルに書き込むメソッドを作ってみたんだけど
何書けばいいのかよくわからんorz

ソースはこちら
climbi.com/b/4058/0

150 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 22:10:24.12 ID:40ee8aRr.net]
>>147
こんなもん実際に普通に動かして確認でいいよ
やるとしたらuncaughtExceptionの中身をメソッドに切り出して
それをテストすることになるだろうけど、そのときのテストケースって
・引数に渡した例外のメッセージが出力されていること
・その時点のスタックトレースの文字列が出力されていること
だろ?
実際にこれでテスト書いてみりゃわかるけど、
メソッドの実装と同じコードをテストで繰り返すことにしかならないので意味ない
それに、どうせ異常時のデバッグ用なんだからどうでもいいでしょ

151 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 22:59:32.10 ID:/90islqK.net]
>>148
回答ありがとうございます。

システムの共通部分って、普通テストするもんなんですか?
業務システムの共通部分ってほとんど、画面周りの制御だったりする気がします。

152 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 23:04:10.84 ID:/RiyGk+g.net]
これはひどいw

153 名前:デフォルトの名無しさん mailto:sage [2015/05/04(月) 23:07:15.46 ID:F4f6sgNa.net]
影響範囲は全部テストしようや

154 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 00:10:21.36 ID:pcpJvysD.net]
そもそも、テストってクラスを全部書き終わった後に書くべきなの?
メソッドを作ったら、テスト書くほうが現実的な気がする

そして、テストに書く内容なんだけど、今までは目視でやってた事をコードに落とせばいいんだよね
自動テストしない場合:メソッド作る → 動かす → メソッド修正
だったけど
自動テストする場合:メソッド作る→自動テスト作る→自動テストする→メソッド修正

みたいな感じ?

155 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 00:54:42.07 ID:P8IV0u4y.net]
いや本来はテストを先に書く
テストのみを仕様として認めるというところまで突き詰めるなら、
テストを書いたらとにかくそのテストを通るようにメソッドを無理矢理実装し、
それに対抗してテストを修正し、また実装を修正し、…を繰り返す

156 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 01:57:34.93 ID:i6lTVV+i.net]
ソフトウェアテスト
ja.wikipedia.org/wiki/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%86%E3%82%B9%E3%83%88



157 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 02:18:46.75 ID:AHzpMzOz.net]
>>152
TDD、テストファーストだと、先にテスト作って、テストが失敗することを確認しておくことも。
で、テストが通るようになったら、そのメソッドは完成。

テストしやすいような設計も要求される。

158 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 02:24:58.72 ID:i6lTVV+i.net]
ところで話ガラリと変わるんだけど
スレッドってどういうところでどういう処理をするときに使う?
プログラム自体の挙動全体をスレッド化する?それとも特定の関数だけスレッド化する?

159 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 02:25:00.49 ID:HU33fwDL.net]
むしろテストを突破するだけのニセコード書くドカタが多すぎて危険

160 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 02:27:19.95 ID:HU33fwDL.net]
>>156
サブスレッド実行したい時としか言いようがない
プログラム全体とかメソッドだけとかいう発想はない

161 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 02:35:26.00 ID:i6lTVV+i.net]
例えば「ある重たい処理を走らせるときに,画面が固まっている状態を防ぐために
プログレスバーを出すとする。この時,主処理とは別にプログレスバーを動かす処理を
同時に動かす必要がある。これはマルチスレッドで実現する」みたいな話がある。

つまり,今まで作ってた処理だとどうも動きがよろしくないな,という時に
マルチスレッドで作ってみてはどうか,という選択が生まれるという感じで認識してればOK?
未だにマルチスレッドでプログラムを本格的に作ったことがなくて
そういう機会がないだけなのかよく分からなくてさ

162 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 03:14:30.12 ID:AHzpMzOz.net]
>>156
何もしなくても1つはスレッド走ってるだろ。
並列化したいところはマルチスレッドにする。
サーバーとか、複数人を相手にするものを作ってみればわかるんじゃないか。

163 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 03:37:59.87 ID:i6lTVV+i.net]
>>160
なーるほどなー
機会があれば作ってみますわ( ・ω・) dd

164 名前:126 mailto:sage [2015/05/05(火) 13:35:57.68 ID:L//ecjsr.net]
たびたび失礼します.
今記述しているクラス uSentence にて,インスタンス変数が10個ほどあり,
コンストラクタでは String[] ssをうけとって,個々のインスタンス変数に順に代入しようとしています.

そこで相談なんですが
ss[0] -> uSentence.SerialNumber
ss[1] -> uSentence.textEnglish
ss[2] -> uSentence.textJapanese
...
ss[12] -> uSentence.trainning30days
と代入するペアをテーブルをつくって対応付けることは可能でしょうか?
それとも以下のように switch で分岐するしかないのでしょうか?
あるいは,こういう時の見通しのいい方法があるのでしょうか?

ideone.com/v7tBnL

よろしくお願いいたします.

165 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 14:06:29.55 ID:IMCgsh6x.net]
>>162
インスタンス変数名をキーにして
Mapとか使ってみるとよいかも。

166 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 14:08:07.56 ID:VqcgXOX/.net]
なんでループと関係ないものをループにしたがらかなあ
日付解析をメソッドにしてSerialNumberと同様につらつらと代入を書くのが筋



167 名前:126 mailto:sage [2015/05/05(火) 14:12:09.33 ID:L//ecjsr.net]
>>163
それは凄い発想ですね
個々のクラスはインスタンス変数群の代りに一個のマップを持ち(あるいは int 用の map, double 用の map とか)
変数名はただのキーワードに成り下がる‥

どうでもいい場合でも効率について突っ込まれる C/C++ ではありえない話です,ありがとうございます.

168 名前:126 mailto:sage [2015/05/05(火) 14:29:12.64 ID:L//ecjsr.net]
>>164
のぞいてくださりありがとうございます.

>SerialNumberと同様につらつらと代入を書くのが筋

ああ,やっちまった
ideone.com/yB3Er6
確かに書いてみると非常に楽でした,書いてみるまでわかりませんでした‥

169 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 14:38:08.89 ID:9i5Yx/sk.net]
>>166
こういう方法もあるけど確かJava 8以降の文法
ideone.com/Qn3Xpj

170 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 16:06:01.53 ID:67f08jzO.net]
これだと1000個のダイアログを表示したり消したりするのにとても時間が掛かってしまいます。これを一瞬でする方法はありませんか?
public class Main {
public static void main(String[] args) {
Dlog[] d=new Dlog[1000];
for(int i=0;i<d.length;i++){
d[i]=new Dlog(100,100,"あいう.gif");
}
for(int i=0;i<d.length;i++){
d[i].setVisible(true);
}
try{Thread.sleep(5000);}catch(InterruptedException e){}
for(int i=0;i<d.length;i++){
d[i].setVisible(false);
}
}
}

171 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 16:07:47.04 ID:67f08jzO.net]
インポート省略
public class Dlog extends JDialog{
Dlog(int x,int y,String str){
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
Rectangle rect = env.getMaximumWindowBounds();

setSize(x, y);
int x2=new java.util.Random().nextInt(rect.width)+1-x;
if(x2<0){
x2=0;}
int y2=new java.util.Random().nextInt(rect.height)+1-y;
if(y2<0){
y2=0;}
setBounds(x2,y2,x,y);
setResizable(false); //サイズ変更不可

JPanel p = new JPanel();
p.setPreferredSize(new Dimension(x, y));
p.setOpaque(false);

Container contentPane = getContentPane();
contentPane.add(p, BorderLayout.CENTER);//フレームにパネルを追加
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

dispose(); // 表示枠の状態を切り替えるために一旦解放
setUndecorated( !isUndecorated() ); // トグル切り替え

JLabel l = new JLabel(new ImageIcon("./img/"+str));

setBackground(new Color(0,0,0,0));//透明

p.add(l);}}

172 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 16:28:01.70 ID:2BN427HT.net]
1000個のダイアログ表示とかウイルスでも作ってんのか

173 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 16:51:01.86 ID:67f08jzO.net]
ウイルスではありません。ソースを見てください。
透明フレームを使い画像(透過gifなど)を画面のランダムな位置に表示したいです。

174 名前:126 mailto:sage [2015/05/05(火) 17:22:40.96 ID:L//ecjsr.net]
>>167
なるほど
なんとかできました ideone.com/8tXdlA
アイディアありがとうございました

175 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 17:27:17.35 ID:Gs+oRm+R.net]
staticなメソッドを呼ぶのに、クラス名でなくインスタンスを指定した場合など、
黄色い警告は出るがプログラムは普通に走ります。
それでも修正する必要があるのでしょうか?
修正しない場合、予期せぬエラーなどが出るのでしょうか?
教えてくだちゃい。

176 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 18:38:21.81 ID:AHzpMzOz.net]
>>173
Javaを書く人は全てその何か知らない黄色い警告が出る環境で書いてると思うか?



177 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 19:02:44.19 ID:S01jPe5f.net]
多くのドカタは黄色の線を気にしてないな

178 名前:デフォルトの名無しさん mailto:sage [2015/05/05(火) 19:23:52.16 ID:t65JX4y1.net]
SuppressWarningsおじさん「SuppressWarnings」






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef