12/04/24 06:00:35.05
うざい
151:デフォルトの名無しさん
12/04/24 13:54:18.80
パッケージ名なんですが、みなさんどんな感じでわけてます?
どんなに小規模のアプリケーションでも、
[自分のドメイン名].[アプリケーションの名前].[クラス]ってやってます?
それとも
[自分のドメイン名].[アプリケーションの名前のクラス]みたいにいきなり置いてます?
152:デフォルトの名無しさん
12/04/24 14:10:56.76
「アプリケーションの名前」 っつーか、用途じゃね?
153:デフォルトの名無しさん
12/04/24 14:11:30.22
クラスファイル1個ぐらいの小規模アプリだったらデフォルトパッケージに置いとく。
154:デフォルトの名無しさん
12/04/24 14:15:42.24
>>152
あ、なんか書き方おかしかったですが、パッケージをそのアプリケーション専用の作るか、作らないかって質問でした。
>>153
ありがとうございます。
よく考えたら、全部が全部パッケージに分類しなくてもいいのか。
155:デフォルトの名無しさん
12/04/24 16:57:24.35
誰か助けて・・・
156:デフォルトの名無しさん
12/04/24 17:04:02.20
知らんがな
157:デフォルトの名無しさん
12/04/24 18:53:41.48
漏れは自分のドメイン名は恥ずかしいので付けてない
158:デフォルトの名無しさん
12/04/24 20:53:26.36
JarファイルA、B、Cが有ったとして、
AはX-1.0でないと動かない。
BはX-2.0で無いと動かない。
X-1.0とX-2.0の仕様は部分的に非互換で部分的に互換。
つまり似ている部分は有るが共存はできない。
こういう場合はどうすれば…
159:デフォルトの名無しさん
12/04/24 20:54:00.95
○ JarファイルA、B、Xがが有ったとして、
160:デフォルトの名無しさん
12/04/24 21:21:32.44
ggrks
161:デフォルトの名無しさん
12/04/24 22:17:17.07
複数のXでAとBの開発・テストを平行して行いたいのならMaven覚えればいい
A,B両方を使うDがどっちのXを参照すべきかは他人に判断できない問題
162:デフォルトの名無しさん
12/04/24 22:48:16.33
よくFactoryでもなければ、ClassでもないのにstaticでnewInstance();を定義しているクラスがありますが、
あれは何の意義があるんでしょうか?new Type();と比べ何のメリットがあるんでしょう?
163:デフォルトの名無しさん
12/04/24 22:51:36.32
1 今後変えていくかもしれんのでnewでインスタンスつくんなおという願い
2 やってみたかっただけ
3 知能に問題がある人が書いた
164:デフォルトの名無しさん
12/04/25 06:08:05.14
>>163
> 1 今後変えていくかもしれんのでnewでインスタンスつくんなおという願い
なら、コンストラクタ不可視にすんだろ。
> 2 やってみたかっただけ
> 3 知能に問題がある人が書いた
これはあるある
4 内部でうまいことキャッシュしてやるからnewInstance使え。キャッシュとか
別にいらねーなら勝手にnewしろ。そのかわり自分で面倒見ろよ
大抵は3か4だろう。2は殴れ。3は殴るな後が怖い。
165:デフォルトの名無しさん
12/04/25 06:52:14.81
死ねよ雑魚が
166:デフォルトの名無しさん
12/04/25 08:52:47.69
自殺宣言?
167:デフォルトの名無しさん
12/04/25 11:52:19.93
「自分は頭が良くて詳しいです」的な自己満足レスの典型だぞ。
相手は超初心者なんだからもう少し優しく教えてあげないと。
さもなくばスルーでOK
168:デフォルトの名無しさん
12/04/25 12:08:04.14
>>162
staticファクトリーメソッドで調べてごらん
169:デフォルトの名無しさん
12/04/25 12:50:03.47
断る
170:デフォルトの名無しさん
12/04/25 14:15:45.83
あ゛?なめてんのか?
171:デフォルトの名無しさん
12/04/25 14:58:43.99
>>162
シングルトン
インスタンスの数を常に1つにしたい場合に使う
172:デフォルトの名無しさん
12/04/25 15:00:37.73
Java6u31の総称型の質問です。
class Foo<T extends Hoge> {
public int insert(List<T> entitylist) { /* ... */ }
public int insert(List<Long> primaryKeyList) { /* ... */ }
}
とあるとき、java.lang.LongはHogeのサブクラスではないのに同じメソッドイレイジャだとコンパイルエラーになります。
総称型のextendsによる限定は考慮されない仕様なのでしょうか。
173:デフォルトの名無しさん
12/04/25 15:16:58.70
過去と互換性のあるレイヤではパラメタ型全部消えるのでerasure。
174:デフォルトの名無しさん
12/04/25 16:18:00.39
コンパイルの過程で総称型の情報が消えてしまい、
List<Foo>もList<Baa>もただのListとなるから同じとみなされるわけですね。
erasureの動きが少し理解できました。
ありがとうございました。
175:デフォルトの名無しさん
12/04/25 18:46:45.00
java6 update16ください
176:デフォルトの名無しさん
12/04/25 19:27:17.23
>>171
シングルトンはnewInstance()なんて名前普通つかわんだろ
177:ora!
12/04/25 19:52:13.02
>>175
[Java の旧バージョンと関連文書の入手先]
URLリンク(www.java.com)
178:デフォルトの名無しさん
12/04/25 20:07:39.23
>>167
死ねよ
179:デフォルトの名無しさん
12/04/26 00:27:03.13
シングルトンはgetInstance()だな
>>162がよく見るソースコード見てみたいものだ
180:デフォルトの名無しさん
12/04/26 00:37:19.91
5 今後プリミティブ型廃止の流れがきた際にnew演算子を使っていた不幸な人たちを少しでも減らしたい願いの表れ
181:デフォルトの名無しさん
12/04/26 01:10:26.08
>>172
Javaの型パラメータは、コンパイル時に除去されてObject型になってしまうのだよ。
この性質のことをイレイジャという。
そんなわけで、おまえさんが例示した2つのメソッドは同じシグネチャになってしまいコンパイルエラーになるわけだ。
182:デフォルトの名無しさん
12/04/26 02:14:23.87
抽象戦隊!イレイジャー!
よし覚えた。
183:デフォルトの名無しさん
12/04/26 03:54:24.16
私的用プログラムを高速化したいので、javaからsse1,sse2(amd64)にアクセスしたいんですが、JNI,JNAを使ってCでブリッジを書かないとやっぱり無理でしょうか。
184:デフォルトの名無しさん
12/04/26 12:32:33.55
わからない
俺にきくなよ
185:デフォルトの名無しさん
12/04/26 13:07:39.15
知らないならレスしないでください
うざいだけです
186:デフォルトの名無しさん
12/04/26 18:33:31.14
JNI,JNAを使ってCでブリッジを書けばsse1,sse2(amd64)にアクセスできますよ
187:デフォルトの名無しさん
12/04/26 21:43:41.28
sseの高速化メリットよりメソッド呼び出すコストの方が高そうだな
188:デフォルトの名無しさん
12/04/26 21:45:54.50
>>168
調べましたけど何でstaticなんでしょうね。
インスタンスメソッドにしたって大したコストにならないでしょうに。
189:デフォルトの名無しさん
12/04/26 22:10:27.71
>>187
アーキテクチャにもよるけど、JNI1回で10-50msぐらいかかる。
SSE使うだけのジョークアプリになるね。
190:デフォルトの名無しさん
12/04/26 22:27:00.05
だなw
191:デフォルトの名無しさん
12/04/26 22:43:23.68
今のJVMって最適化オプションでSSE使ってくれるだろ
あくまで俺が使ったときの一例の話だけどgccの自動ベクトル化より速かった
192:デフォルトの名無しさん
12/04/27 00:07:33.40
Romeを利用してRSSを配信したいのですが、enclosureタグが出力できません。
List<SyndEnclosure> enclist = new ArrayList<SyndEnclosure>();
SyndEnclosure enc = new SyndEnclosureImpl();
enc.setUrl(image_path.toString());
enc.setType("image/jpeg");
enc.setLength(image_file.length());
enclist.add(enc);
entry.setEnclosures(enclist);
どこか問題ありますでしょうか・・・
193:デフォルトの名無しさん
12/04/27 00:08:54.32
sse(mmx),amd64は、java8で実装される予定のラムダとbulk dataを利用して使おうと考えてます。
java8からはmulticoreの活用はもちろん基本的に内部イテレータ仕様がメインになるようなので、java5 generics typeの時と同じく次回の改訂はjava languagesのパラダイムシフトになるかなと思います。
194:デフォルトの名無しさん
12/04/27 00:39:51.99
意味がわからん
ラムダ使った並列化はMIMDだろ
195:デフォルトの名無しさん
12/04/27 01:06:27.15
起動したクラスって取得できますか?
public class SuperClass{
public static void main(String[] args){
}
}
public class SubClass extends SuperClass{
}
こんな感じで、SubClassで起動した場合に
mainの中で起動したクラス(SubClass)を取得したいのです。
196:デフォルトの名無しさん
12/04/27 06:51:13.43
>>193
> 9年ぶりに言語仕様を改訂予定
URLリンク(ja.wikipedia.org)
197:デフォルトの名無しさん
12/04/27 08:57:14.77
↓の状態で実行すると数字の重複をしてしまいます。
乱数の重複を防ぎたいのですがどうすれば良いですか?
ネットでいろいろな方法を調べたのですが、どれも上手くいきませんでした。
import lib.Input;
public class Sample1{
public static void main(String[] args){
int a = Input.getInt("何人に配りますか?(2~5)");
for (int i=1;i<=a;i++){
System.out.println(i+"人目の手札は以下のとおりです.");
System.out.println(cards()+""+cards()+""+cards()+""+cards()+""+cards());
}
}
public static String cards(){
String[] a = {"ハート","クラブ","ダイヤ","スペード"};
int b= (int)((Math.random()*13)+1);
int c= (int)(Math.random()*4);
int c_b = (int)(Math.random()*53);
String d = a[c] + "の" + b +" ";
if(c_b==0){
d="ジョーカー";
}
return d;
}
}
198:デフォルトの名無しさん
12/04/27 08:59:40.72
>>197
あらかじめ使えるカードの一覧を作っておいて使用済みのチェックを入れる。
199:デフォルトの名無しさん
12/04/27 09:54:25.99
>>196
間違いだから削除した
200:デフォルトの名無しさん
12/04/27 11:08:27.44
>>197
配列に52枚のカードを入れて、それをランダムにシャッフルして、先頭から順にめくっていく
201:デフォルトの名無しさん
12/04/27 11:21:05.05
>>197
重複しない膨大な整数系列を高速省メモリで吐いてくれるアルゴリズムの
疑似乱数クラスは、探せばある。
トランプにはオーバースペックか。
202:デフォルトの名無しさん
12/04/27 11:21:12.39
>>197
URLリンク(sasuke.main.jp)に「トランプのシャッフル」ってのがある
203:デフォルトの名無しさん
12/04/27 12:36:20.05
Javaを勉強し始めたばかりで用語について混乱しているので教えて下さい。
クラスをコントラクトすること=インスタンス化(クラス名 変数名=new クラス名();)
インスタンス化された変数をインスタンス
メソッドや変数をまとめて1つのクラスとして独立させることをカプセル化
このような解釈であってますでしょうか。。。
初歩的な質問で申し訳ないのですがサイトなどでの説明がわかりにくかったもので、
誤った理解をしていればご指摘頂ければ幸いです。
204:デフォルトの名無しさん
12/04/27 14:36:48.75
>>203
【インスタンス化】
● クラスからオブジェクトを作ること。
● コンストラクタの呼び出しによって、メモリ上に、新たに生成される
オブジェクト用のメモリの領域を確保すること。
【カプセル化】
● クラスの外部からはフィールドを直接操作できないようにして、必ずメソッドを
経由してフィールドを間接的に操作するようにすること。
205:デフォルトの名無しさん
12/04/27 16:13:09.20
Java7u4 Java6u32 リリース
206:デフォルトの名無しさん
12/04/27 17:48:04.46
>>204
ありがとうございます、
207:デフォルトの名無しさん
12/04/27 18:13:03.93
>>195
public class SuperClass {
static Class subclass=SuperClass.class;
public static void main(String[] args) {
System.out.println(subclass.getName());
}
}
public class SubClass extends SuperClass{
static {
subclass = SubClass.class;
}
}
もしくは
public class SuperClass {
public static void main(String[] args) {
todo(SuperClass.class);
}
public static void todo(Class subclass){
System.out.println(subclass.getName());
}
}
public class SubClass extends SuperClass {
public static void main(String[] args) {
todo(SubClass.class);
}
}
208:デフォルトの名無しさん
12/04/27 18:46:54.53
>>206
いえいえ
209:デフォルトの名無しさん
12/04/27 19:14:47.21
>>198
>>200
理論的には分かりやすい説明ですが、ググったりしたのですが具体的なやり方がぜんぜんわかりません。
210:デフォルトの名無しさん
12/04/27 19:42:56.25
1.カードの枚数分の配列を作る。
2.乱数を2つ発生させて、2つの数字の指し示す配列の中身を入れ替える。
3.気が済むまで2を繰り返す。
とかなら簡単じゃないかな
211:デフォルトの名無しさん
12/04/27 19:47:39.74
>>209
出来合いのなら→>>202のやつ
URLリンク(sasuke.main.jp)
212:デフォルトの名無しさん
12/04/27 20:13:07.35
ArrayListに突っ込んでCollections#shuffle()を使えばいいんじゃね
213:デフォルトの名無しさん
12/04/27 20:49:12.14
馬鹿には無理
214:デフォルトの名無しさん
12/04/27 22:35:00.08
馬鹿にも限度があります><
215:デフォルトの名無しさん
12/04/28 00:21:40.44
トランプの性質上、ジョーカーは例外として
同じものがないのだよ
java.utilで使えそうなインタフェースがSet
こんな感じで、作るものの本質を知ることからはじめるのがプログラミング
制御したい物をどのように組み立てるのか、よく考えるところからはじめよう
これは言語云々の話じゃないけど、心の片隅にでもとりあえず置いてほしい
フィールドとしてSet<Card> cardSet = new 何とかSet<Card>();
cardSetから取り出されたものもさらに別のSetにぶち込む
そのときにコレクション.ソート機能をつかってコンパレートする
イメージは伝わったかな
216:デフォルトの名無しさん
12/04/28 00:27:37.12
ちなみにCardは
int number
enum Type {
スペード("スペードマーク")、ダイヤ("ダイヤ");
final String マーク;
Type (String マーク) {
初期化
}
}
必要があればenumコンストラクタのフィールドをどんどん追加すればいいのかな
enum内にstatic なメソッドも持たせられるのでいろいろ使い道があると思う
217:デフォルトの名無しさん
12/04/28 00:34:03.06
Listを2つ用意(A,Bとする)してAに1~52を格納,Bは空
0~51の乱数を発生させ得られた数番目の要素をAから削除しBに追加
乱数の範囲を1減らして↑を繰り返す
218:デフォルトの名無しさん
12/04/28 02:14:40.50
ふーん
219:デフォルトの名無しさん
12/04/28 09:50:03.85
>>197
>>200の方法をとるのは後ろからになってるけどざっと実装してみた。参考にどうぞ。
import java.util.Random;
import java.util.Arrays;
public class RandomSet{
public static void main(String[] args){
//0 ~ LIMIT-1 の重複しないint配列を用意
int LIMIT = 52;
int[] rand = new int[LIMIT];
for(int i=0;i<LIMIT;i++){
rand[i] = i;
}
//配列をシャッフルする
Random r = new Random();
int temp = -1;
for(int i=LIMIT;i>0;i--){
int index = r.nextInt(i);
temp = rand[index];
rand[index] = rand[i-1];
rand[i-1] = temp;
}
//出力
System.out.println("0 ~ "+(LIMIT-1)+" までの重複しない乱数列");
for(int i=1;i<=LIMIT;i++){
System.out.printf("%3d",rand[i-1]);
if(i%10==0){
System.out.println();
}
}
System.out.println();
}
}
220:デフォルトの名無しさん
12/04/28 09:59:28.02
なんだこの役に立たないサンプルは
221:デフォルトの名無しさん
12/04/28 10:58:35.94
配列の添え字が0になるのがそんなに嫌か
222:デフォルトの名無しさん
12/04/28 11:20:25.29
何言ってんだコイツw
223:デフォルトの名無しさん
12/04/28 11:45:58.54
なにこのドヤ顔ww
224:デフォルトの名無しさん
12/04/28 12:17:46.13
重複しない乱数をどうやって実装するかによって性格が分かりそうだなww
225:デフォルトの名無しさん
12/04/28 12:36:48.51
意味不明
226:デフォルトの名無しさん
12/04/28 13:20:59.29
あいかわらずアホなスレですな
227:デフォルトの名無しさん
12/04/28 15:01:48.46
すみません、用語についての質問です。
セッター、ゲッターについては以下のような解釈であってますでしょうか。
セッター:異なるクラスのprivateな変数に対し値をセットするためのメソッド
ゲッター:異なるクラスのprivateな変数の値を取得するためのメソッド
228:デフォルトの名無しさん
12/04/28 15:09:56.20
>>227
ゲッター:主人公側のロボット
セッター:敵のロボット、実は主人公のオヤジが乗ってた
229:デフォルトの名無しさん
12/04/28 15:14:28.47
>>227 そう。
フィールド自身は private 宣言で、
フィールドアクセス用のメソッド は public 宣言だよ。
230:デフォルトの名無しさん
12/04/28 15:19:59.70
>>229
必ずしもそうとは限らんけどな
Set/Getはprotectedかもしれないし、
Set/Getのあるクラス内にフィールドが存在しないかもしれない。
231:デフォルトの名無しさん
12/04/28 15:23:33.56
>>229
ありがとうございます!
232:デフォルトの名無しさん
12/04/28 15:23:33.56
屁理屈乙
233:デフォルトの名無しさん
12/04/28 15:28:20.83
>>230
>Set/Getはprotectedかもしれない
例えば、パッケージが1つの場合などはSet/Getは”privateでなければ良い”いう解釈ができるということでしょうか?
>Set/Getのあるクラス内にフィールドが存在しないかもしれない
これについては良くわからないのですが、フィールドが存在しないクラスにSet/Getを用意する必要性が出てくることもあるということでしょうか>
234:デフォルトの名無しさん
12/04/28 15:30:50.94
常に単純にフィールドの読み書きをするだけだったらpublicフィールドでいい。
わざわざメソッドを通すなんて面倒なことをするのは、
後で実装を変更するため。
直接フィールドを持たないような実装に変更することもありうる。
235:デフォルトの名無しさん
12/04/28 15:35:09.45
例えば日時を管理するクラスに曜日フィールドはなくてもいいが、
日時から曜日を計算して返す曜日ゲッターがあってもいい。
236:デフォルトの名無しさん
12/04/28 15:36:50.64
そうそう
>>233 >>230 の後半はカン違いと思われ…
237:デフォルトの名無しさん
12/04/28 15:44:33.90
>>234
Set/Getがメソッドである本質は、物理的なコードの書き換えというより
継承での実行時書き換えのためだろ。
>>233
下についてだが、どこまで素人かしらんけど、
Javaがある程度解るならこんな感じ。
DelivedBはExampleBaseを使える様に
getValue()を用意してるけど、DelivedBとしては
100以外返す必要がないないんで、フィールドをもたない。
interface ExampleBase
{
int getValue();
}
class DelivedA implements ExampleBase
{
private int value;
public int getValue()
{
return value;
}
}
class DelivedB implements ExampleBase
{
public int getValue()
{
return 100;
}
}
238:デフォルトの名無しさん
12/04/28 15:48:43.47
>>233
>例えば、パッケージが1つの場合などはSet/Getは”privateでなければ良い”いう解釈ができるということでしょうか?
いや、アクセス権限は関係ないというはなし。別にprivateにしたってset~()/get~という形でメソッド定義してりゃ
セッター、ゲッターと呼ばれる。アクセッサーと呼ばれるかどうかは知らんけどな。
239:デフォルトの名無しさん
12/04/28 16:07:23.94
皆さんたくさんのご意見ありがとうございます。
私はVC、VBの経験はありますがJAVA(オブジェクト指向)はまだ記述方法等を順に学んでいる段階のため理解が浅く、
ご教授頂いた内容を理解しきれない部分があります。
とりあえず今の段階ではset~()、get~()とネーミングされた、値を設定・取得するためのメソッドという理解に留めておこうと思います。
240:デフォルトの名無しさん
12/04/28 16:11:27.67
>>239
蛇足だが、現実でVCの経験があると言うのは控えた方がいい。
VCでC言語をやっていたぐらいにしておかないと
ハイレベルな作業頼まれてトラブる事が有るぞ
241:デフォルトの名無しさん
12/04/28 16:23:26.61
初心者にドヤ顔www
242:デフォルトの名無しさん
12/04/28 16:24:51.27
そんなにマイクロソフトに染まっちゃているならいっそのことドットネットの方をやったらどうですか?
243:デフォルトの名無しさん
12/04/28 16:37:35.10
だよなぁ
普通VCやってたって言ったら日本では最高レベルのプログラマの称号だし。
VCを本当にやってた人間ならJavaなんて学ぶことなく使えるし
244:デフォルトの名無しさん
12/04/28 16:42:33.31
日本で最高に苦労していたプログラマって意味ですよね?
245:デフォルトの名無しさん
12/04/28 16:46:59.66
C++つかってる様な仕事で締切りに追われて苦労してるようなとこあんの?
うちとか約1年ぐらい掛けてゆっくり1つの製品作ってたりするけど。
C++で製品開発はあっても、受注なんてほとんど無くね?
246:デフォルトの名無しさん
12/04/28 16:48:27.94
VC++とC++(gcc)はまったく別物ですよ。
247:デフォルトの名無しさん
12/04/28 16:52:37.34
>VC++とC++(gcc)
そもそも、この書き方がおかしい
Microsoft (R) C/C++ Optimizing Compilerとgccを比較してるのか?
統合開発環境全体とgccというコンパイラ比較してんのか?
248:デフォルトの名無しさん
12/04/28 16:58:32.40
ツマラン
249:デフォルトの名無しさん
12/04/28 16:58:51.29
>>245
C++ のベテランには、C$ は使うが Java は意地でも使わないって人もいるね。
250:デフォルトの名無しさん
12/04/28 17:00:14.50
× C$
○ C#
251:デフォルトの名無しさん
12/04/28 17:03:22.49
ところでC++のベテランさんは得意のC++で何ができるんですか?
252:デフォルトの名無しさん
12/04/28 17:03:36.69
ハンガーwwww どう見てもブーメランだろwwww
253:デフォルトの名無しさん
12/04/28 17:03:53.43
MMDが作れる
254:デフォルトの名無しさん
12/04/28 17:04:39.30
>>249
俺逆にC#の方をあんまり使わないわ
仕様が頻繁に変わる言語は追従するのが面倒といより、
今まで書いたコードがゴミになりそうで嫌。
そういういみで、PerlとかPHPも苦手。
使い捨て用にしか使わん。
255:デフォルトの名無しさん
12/04/28 17:06:40.03
>>254
>仕様が頻繁に変わる言語
kwsk
256:デフォルトの名無しさん
12/04/28 17:10:49.80
>>255
C#はC++が03から11になる間に4もバージョン上がったろ
ついでだがPerlは、Perl5からPerl6になって互換性なくなった
PHPはclassが予約語になった
257:デフォルトの名無しさん
12/04/28 17:12:31.79
サンクス!
258:デフォルトの名無しさん
12/04/28 17:17:31.11
どの言語でもだが予約語の追加は勘弁して欲しい
予約語ついかする言語とは深い付き合いしたくない
259:デフォルトの名無しさん
12/04/28 17:32:13.51
>>256
javaだと2003あたりから2011(java7)まででいくつ上がったんでしたっけ?
260:デフォルトの名無しさん
12/04/28 17:42:46.61
>>259
ライブラリや言語外はそれなりに更新されたけど、
言語自体はそんなに頻繁に更新されたか?
Java2からJava7の間で目立った変更があったのって
5のあたりぐらいじゃないか?
261:デフォルトの名無しさん
12/04/28 17:45:24.57
実質は、1.2 ~ 1.7 だし・・・
262:デフォルトの名無しさん
12/04/28 17:49:45.25
推奨されないメソッドを使わなければそんなに困らないよね
263:デフォルトの名無しさん
12/04/28 17:59:48.54
>>260
こんなチンコすれでドヤ顔なんかしてないで、もうちょっといろいろ勉強した方がいいと思いますよ。
264:デフォルトの名無しさん
12/04/28 20:58:40.49
もうちょっといろいろ勉強した方がいいと思いますよ(ドヤ
265:デフォルトの名無しさん
12/04/28 22:22:00.42
>>258
C#はコンテキストキーワード上等だからキーワード増えても予約語は増えず基本的に互換性は保たれる
Javaは予約語の追加をやった前例がある
266:デフォルトの名無しさん
12/04/28 23:13:23.04
enumくらいだろ
267:デフォルトの名無しさん
12/04/28 23:20:00.45
C++ のベテラン必死w
268:デフォルトの名無しさん
12/04/28 23:21:18.63
assert
269:デフォルトの名無しさん
12/04/28 23:27:20.34
enumとassertって実装前はconstと同じ予約じゃなかったんだっけ?
270:デフォルトの名無しさん
12/04/28 23:35:36.89
>>269
うん違う
271:デフォルトの名無しさん
12/04/28 23:37:34.41
新しいキーワードを無効にするコンパイラーオプションとかあったよな
新規追加だよ
272:デフォルトの名無しさん
12/04/28 23:51:51.56
>>270
ありがと
273:デフォルトの名無しさん
12/04/28 23:56:19.89
予約語なんてパッケージや名前空間に入れてしまえばいいのにな
どの言語もしないな
java.import java.import;
import java.int;
import java.class;
とか。
274:デフォルトの名無しさん
12/04/28 23:58:00.33
assertが追加された予約語と感じる奴が
いったいどれだけいるのか
275:デフォルトの名無しさん
12/04/28 23:59:32.37
名前空間とか考えず使えるから予約語なんだろ
276:デフォルトの名無しさん
12/04/29 00:02:44.11
事実として予約語だからな
何と言おうが思いっきりbreaking changeだ
277:デフォルトの名無しさん
12/04/29 00:04:28.54
>>275
別にそこに拘る必要ないだろ
予約語と表現するのが嫌なら別の名前でかまわないだろうし
278:デフォルトの名無しさん
12/04/29 00:06:05.86
そういやキーワードという言い方があったな
279:デフォルトの名無しさん
12/04/29 00:06:44.95
今日のキーワードは…
280:デフォルトの名無しさん
12/04/29 00:10:24.73
予約語!
281:デフォルトの名無しさん
12/04/29 00:10:50.81
おまえらassert使ってる?
282:デフォルトの名無しさん
12/04/29 00:17:28.76
assertって何がしたかったんだろうな
融通利かなすぎだろ
結局のところ条件コンパイルなんだからC#のConditionalみたいなのにすればよかったのに
283: ◆QZaw55cn4c
12/04/29 00:24:31.72
>>282
アサーションを使わないというのは、ちょっと考えにくいのですけれどもね
284:デフォルトの名無しさん
12/04/29 00:29:04.29
アサーションする=assert使う
とは限らないだろ
285:デフォルトの名無しさん
12/04/29 00:31:18.92
開発環境やプロジェクトのポリシーと密接に関連してるからな
ライブラリでやるべきだった
286:デフォルトの名無しさん
12/04/29 01:07:04.26
ライブラリじゃ不可能だから言語構文に入ったんでしょ
287:デフォルトの名無しさん
12/04/29 01:11:35.59
いつか来た道
288:デフォルトの名無しさん
12/04/29 01:11:52.28
enumの話しならともかく
assertはライブラリでも出来るだろ
289:デフォルトの名無しさん
12/04/29 01:15:06.37
>>288
どうやって?
if文使ったりしたらデバッグモードじゃなくても判定が入るよ。
290:デフォルトの名無しさん
12/04/29 01:28:44.92
>>273
javaだとannotationとして似たようなものは既に実装されています。
291:デフォルトの名無しさん
12/04/29 01:30:47.88
浅学なおまえが思いつく程度に不十分な仕様なら、ネットにも大量に苦情が上がっている。
だから、おまえの不満はネットでは既に語り尽くされているか、全くの見当違いでしかない。
292:デフォルトの名無しさん
12/04/29 01:34:07.54
苦情が上がらないだけなら
単に見向きもされてないだけの可能性もあるから
論理的な解釈とはいえないな
293:デフォルトの名無しさん
12/04/29 01:35:05.85
>>267
294:デフォルトの名無しさん
12/04/29 01:42:53.14
assertをlibraryって、えっと議論する必要あるの?
295:デフォルトの名無しさん
12/04/29 01:44:06.30
馬鹿には無理
296:デフォルトの名無しさん
12/04/29 01:49:43.09
意味はあるだろ
そもそも外す必要なんか出るのかっていう根本からして
297:デフォルトの名無しさん
12/04/29 01:51:26.53
外す必要が無いならassertなんて要らないだろ
298:デフォルトの名無しさん
12/04/29 01:52:04.11
C#はライブラリでやってるぞ
アノテーション使ってコンパイルオプションで外せるメソッドが定義できる
あれパクればいいんだよ
299:デフォルトの名無しさん
12/04/29 01:57:07.57
assertだけ着脱できても正直小回り効かないよね
で、どうせ着脱しないしオーバロードたくさんある方が便利だよね
ってことでcommonsライブラリとかのassert使われちゃうっていう
300:デフォルトの名無しさん
12/04/29 01:58:18.61
C#でDirectX(とOpenGLも)がまともに使えるならC#がいくらキモくてもまだ活路があるんです
301:デフォルトの名無しさん
12/04/29 02:01:45.39
話それるがApache CommonsってJavaで書いててもC臭いから苦手。
302:デフォルトの名無しさん
12/04/29 02:02:16.69
条件コンパイルは絶対やらないっていうんならそれを貫いてVMレベルで実装すればよかったのにな
あっさり覆して中途半端に条件コンパイルに手を出したからおかしくなった
どうせ条件コンパイルやるんならC#のようなやり方した方がずっと綺麗で有用
303:デフォルトの名無しさん
12/04/29 02:04:03.57
commonsがC臭いってどの辺りだろ?
304:デフォルトの名無しさん
12/04/29 02:13:19.25
java8でmodule仕様が入るので改善されますよ。
305:デフォルトの名無しさん
12/04/29 02:24:14.37
>>303
Log4jやらCommons Validatorやら全般的に。
例えばLog4jならこんな感じ。メソッドでエラーレベルを変えてる。
Logger logger = Logger.getInstance(Sample.class.getName());
logger.info("This is info.");
logger.warn("This is warn.");
logger.error("This is error.");
メソッド固定なら、構造体と関数で書いたCのロガーと変わらないじゃん。
Javaでやるんだから、メソッドじゃなくオブジェクトでエラーレベルを変えてほしい。
オブジェクトを切り替えるだけでログレベルを一括で置き換えられるようになるでしょ。
Logger logger = InfoLogger.getInstance(Sample.class.getName());
logger.write("This is info.");
Logger logger = WarnLogger.getInstance(Sample.class.getName());
logger.write("This is warn.");
Logger logger = ErrorLogger.getInstance(Sample.class.getName());
logger.write("This is error.");
Validatorも似たような話で、mailValidate、tellValidateとかメソッドで別けるんじゃなく、
validateメソッドを持ったMailValidatorクラス、TellValidatorクラスという形で別ける方がJavaらしいと思う。
306:デフォルトの名無しさん
12/04/29 02:27:06.43
でざぱた
307:デフォルトの名無しさん
12/04/29 02:28:48.51
馬鹿には無理w
308:デフォルトの名無しさん
12/04/29 02:30:58.56
>>305
Loggerが何を抽象化してるか考えると、そのままでいいと思う
sayHelloとsayGoodbyを持つPersonクラスの代わりに
HelloPersonとGoodbyPersonを用意しよう
っていう位には奇妙に感じるんだが。。
309:デフォルトの名無しさん
12/04/29 02:32:05.40
javaではsingletonとstaticって相性が悪いんですか?
310:デフォルトの名無しさん
12/04/29 02:33:05.73
>>308
ちょっと例が良くないなsayHello、sayGoodbyだったらhelloとgoodbyを引数に回すもの。
311:デフォルトの名無しさん
12/04/29 02:33:36.16
>>305
Validatorはそうなってなかったっけ?
312:デフォルトの名無しさん
12/04/29 02:35:29.38
>>310
sayHelloであってるよ
インスタンスが日本人なら「こんにちわ」
インスタンスがアメリカ人なら「やあマイキー」
ってら言わせるんだから
313:デフォルトの名無しさん
12/04/29 02:36:02.80
>>308
java2d関係を使ったことがあるなら奇妙というほどでもない
314:デフォルトの名無しさん
12/04/29 02:37:52.20
>>312
man.sey( new Hello() );
man.sey( new Goodby() );
これでも行けるでしょ。
315:デフォルトの名無しさん
12/04/29 02:38:37.03
>>312
そこは"hello"と"goodbye"をキーにしてi18nだろjk…
316:デフォルトの名無しさん
12/04/29 02:38:51.14
sayをうちまちがえたハズカチ
317:デフォルトの名無しさん
12/04/29 02:41:31.22
>>314
それじゃ国際化するときに、HelloFactoryとGoodbyFactoryが必要になる
なにより凝集性がよろしくない
318:デフォルトの名無しさん
12/04/29 02:41:52.09
>>315
ああいいね。
それ見てこんなの思い出したわ
man.say( Hello.getInstance() );
man.say( Goodby.getInstance() );
台詞が決まってるなら
man.say( Words.HELLO );
man.say( Words.GOODBY );
319:デフォルトの名無しさん
12/04/29 02:42:54.68
>>317
台詞を言うのはmanのオブジェクトで、HelloやGoodbyは識別用だよ。
320:デフォルトの名無しさん
12/04/29 02:45:38.80
>>315
そっちでもいいかも。
ただ、
声だすついでに身体バンバンたたいたり
ハグ♥ってしたりが表現できないよね
>>319
sayメソッドの中身が悲惨なことにならないか?
321:デフォルトの名無しさん
12/04/29 02:51:50.76
バグ♥
322:デフォルトの名無しさん
12/04/29 02:51:58.25
>>251
323:デフォルトの名無しさん
12/04/29 02:54:49.41
定期的に脈絡なくC++にアンカー春奴は何かコンプレックスでもあるのかな?
324:デフォルトの名無しさん
12/04/29 03:04:23.46
>HelloPersonとGoodbyPersonを用意しよう
別にこれもいいと思うけどね。sayで何を言うか本人しだいじゃん。
単にPersonでもsayHelloやsayGoodbyじゃなくて、say持たせて、
meet、breakupメソッドを用意し、meet、breakupどっちが呼ばれたかで
sayの挙動を変えて上げた方が取り回しが効いていいと思う。
さらにinterfaceにsayを持たせておけば、meet、breakupを持ってる事が必須じゃなくなるしね。
他のメソッドでsayの挙動を変えてあげてもいい。
325:デフォルトの名無しさん
12/04/29 03:09:40.56
どうでもいいが要求次第
現実をシミュレートなんてしなくてええんやで
326:デフォルトの名無しさん
12/04/29 03:13:25.84
>>324
interfaceにsayもたせたら、直接呼ばれちゃうぞ
327:デフォルトの名無しさん
12/04/29 03:15:48.27
>>326
何か問題が有る?
328:デフォルトの名無しさん
12/04/29 03:19:54.37
Interfaceの型でうけたら、meetとbreckupがよべない
個別の型でうけたら、meetとbreackupが呼べるかわりに、sayまでみえちゃう
sayが外に見えてる以上は自分の都合だけでは書き換えられない
つまりmeetとbreakupの取り回しがしにくい
329:デフォルトの名無しさん
12/04/29 03:22:52.89
あぶすとらくと
330:デフォルトの名無しさん
12/04/29 03:26:03.06
>>246
331:デフォルトの名無しさん
12/04/29 03:29:40.47
public final void say(){
System.out.println("馬鹿には無理");
}
332:デフォルトの名無しさん
12/04/29 03:30:13.42
Japanese japanese = new Japanese();
japanese.meet();
Irish irish = new Irish();
irish.breakup():
Person person;
person = japanese;
person.say();
person = irish;
person.say();
実用上こまりはしないと思うけど。
333:デフォルトの名無しさん
12/04/29 03:39:29.36
ん?設計意図がわからん
breakup→sayの順で呼んで初めて話してくれるのか?
どうなんだろう
334:デフォルトの名無しさん
12/04/29 03:42:45.53
>>333
そうよ。breakupを呼ばなくても何らかの振る舞いはするでしょうけど。
335:デフォルトの名無しさん
12/04/29 04:26:13.71
Command japaneseSayHello = new JapaneseSayHello();
japaneseSayHello.execute();
( ・´ー・`)どや?
executeの実装だけ入れ替えれば何だって実行できる。
これがオブジェクト指向や!
などと使い方を想定せずに抽象化するのは
複雑さを助長するだけで百害あって一利なし
336:デフォルトの名無しさん
12/04/29 04:29:09.69
>>331
System.setOut(new PrintStream(new ByteArrayOutputStream()) {
public void println(String x) {
System. console().printf("誰でもできるよ(^-^)" );
}
});
337:デフォルトの名無しさん
12/04/29 05:10:41.89
ゆとり乙
338:デフォルトの名無しさん
12/04/29 05:14:36.97
finalつけたのに残念だったね
339:デフォルトの名無しさん
12/04/29 06:02:21.56
勉強になるわー
340:デフォルトの名無しさん
12/04/29 06:45:05.55
ゆとり乙
341:デフォルトの名無しさん
12/04/29 07:38:13.41
ゆとりにはjavaしか無理
342:デフォルトの名無しさん
12/04/29 07:51:25.26
馬鹿がんがれ
343:デフォルトの名無しさん
12/04/29 11:55:51.62
>>111-112
344:デフォルトの名無しさん
12/04/29 13:30:35.64
JOptionPane.showMessageDialog(null, "\"馬鹿\"って言った奴が馬鹿", "", JOptionPane.ERROR_MESSAGE);
345:デフォルトの名無しさん
12/04/29 13:42:43.77
>>335
ラムダとかそんな感じだよね。
用途は、使用する側次第。
346:デフォルトの名無しさん
12/04/29 16:27:24.65
Project Lambdaって結局クロージャ使えるの?クロージャもどきなの?
347:デフォルトの名無しさん
12/04/29 16:38:07.70
クロージャ使いたくなるのってほんとたまになんだよな
そのたまににできないと「糞がぁ」と思っちまうんだけど…
348:デフォルトの名無しさん
12/04/29 17:28:17.58
クロージャもどきってなんね
349:デフォルトの名無しさん
12/04/29 18:23:20.50
exceptionって
イグゼプション?
エグゼプション?
エクスセプション?
350:デフォルトの名無しさん
12/04/29 18:28:07.67
いっくしょんぺ
351:デフォルトの名無しさん
12/04/29 18:32:32.69
エクセプションっぽ
352:デフォルトの名無しさん
12/04/30 00:21:26.63
いまゲームを作ってるのですが、
ちょっとうまくいかないことがありまして、、、
質問させていただきます。
x軸方向y軸方向にそれぞれ異なった速度を持ったイメージがあって
それが画面左から出現してきて右に消えていくというのを作りました。
これを無限に行いたく、配列を使ってやってみたのですが、
配列には限りがありますよね??うーん、、、うまくいきません。
どうにかうまくいく方法はないですかね??
353:デフォルトの名無しさん
12/04/30 00:28:57.37
何がしたいのかよくわからんけど、右に消えていったイメージをまた左から出すようにすればいいんじゃないの?
354:デフォルトの名無しさん
12/04/30 00:34:58.52
>>353
すいません、説明不足でした!
シューティングゲームで自分が打った弾がイメージに当たったら消える
といった風にやりたいのです!
355:デフォルトの名無しさん
12/04/30 00:52:09.01
配列を使わずにArrayListなどを使いましょう
356:デフォルトの名無しさん
12/04/30 00:55:55.20
なぜListなんだ
なぜ
357:デフォルトの名無しさん
12/04/30 01:11:25.94
javaでopengl3(glsl3)以上とshade programmingを使いたいんですがどうすればいいのでしょうか?
358:デフォルトの名無しさん
12/04/30 01:37:20.31
これからjavaを勉強するにあたりさ(他言語経験があり)あどうするかと調べたところ
javaサーブレットjavaアプレットやら色々あるようなんですが、
巷の業務系javaプログラマ募集の求人でjava出来る人ってのは
java = javaサーブレットって事で良いのでしょうか?
Java出来ますと言えば:Javaサーブレット?
業務系:Javaサーブレット?
Web系:Javaサーブレット&Android?
会計やら物流やらもJavaサーブレットによるWebアプリって事になるのでしょうか?
359:デフォルトの名無しさん
12/04/30 01:40:17.82
>シューティングゲームで自分が打った弾がイメージに当たったら消える
>といった風にやりたいのです!
最終的にこれをしたいんだろうが・・・
>x軸方向y軸方向にそれぞれ異なった速度を持ったイメージがあって
>それが画面左から出現してきて右に消えていくというのを作りました。
ここは今理解できてる事だと解る
>これを無限に行いたく、配列を使ってやってみたのですが、
>配列には限りがありますよね??うーん、、、うまくいきません
でもこの一文で何がしたいのか解らん
玉を複数画面上に出したいが、配列に格納しきれないと言ってるのか?
ゲームなら普通上限決めて、一括で確保するぞ。
360:デフォルトの名無しさん
12/04/30 01:42:31.17
土方さんはもっと簡単なマイクロソフト・ドットネットやウインドウズ・メトロを勉強した方がいいと思います。
361:デフォルトの名無しさん
12/04/30 01:44:41.96
>>358
アプレットかサーブレットかと言えばサーブレット。
ただ、まんまサーブレット使うことは少ないと思うが。
あと、商用ならサービスとか、バッチ処理とか、
Webサーバー使わないものも結構有る。
最近の話かもしれないけど。
362:デフォルトの名無しさん
12/04/30 01:53:34.09
>>359
伝わりにくくてすいません
永遠と画面左から敵が出続けるんです。
そいつらを画面手前にいる自機から発射される攻撃でやっつけ続けるというゲームです。
そして攻撃されなかった敵は画面右へと消えていきます。
無限とはいったものの
制限時間をつけるなり、敵から攻撃を受けてゲームオーバーにするなりしようとおもうんです。
敵の数だけ配列をつくると大変なことになるのではないかと、、、
363:デフォルトの名無しさん
12/04/30 03:25:13.10
>>346
クロージャは使えない。ラムダ式は使える。
あくまでもSAMタイプのインタフェース(ひょっとしたら抽象クラスもOKかも)のインスタンスを作る時に
ラムダ式な書き方ができるようになるだけ。
相変わらず、親スコープの変数はfinalで読み込まないとイケない。
ちなみに文法はほぼC#のラムダ式だな。
364:デフォルトの名無しさん
12/04/30 03:39:20.31
初心者なんだが、実際どんなのが作れるんだ?
目標を立てるのに知りたい。
365:デフォルトの名無しさん
12/04/30 03:50:56.46
>>360
366:デフォルトの名無しさん
12/04/30 04:18:30.23
Java+Swingによる2chブラウザ V2C_R50
スレリンク(software板)
367:デフォルトの名無しさん
12/04/30 04:23:19.11
日経ソフトウェア、アクセスランキング2012年04月28日
① [1]JVM,API,言語仕様---Javaは三...
② [2]Java SE 7の新機能を読み解く
③ [4]クロージャやモジュール機構など,Java ...
Java新時代へ
日経ソフトウェア
URLリンク(itpro.nikkeibp.co.jp)
368:デフォルトの名無しさん
12/04/30 04:25:45.63
>>364
なんでもつくれます
369:デフォルトの名無しさん
12/04/30 04:30:03.14
>>368
どこでもそう言われる。
具体的にどんなのだか教えてくれ
370:デフォルトの名無しさん
12/04/30 04:37:51.19
>>367
そこ、登録しないと読めないし日経は有料サイトでウザいからリンク張るな
371:デフォルトの名無しさん
12/04/30 04:40:07.24
itは読んでるとイラッとするからgoogle
検索でもblack listに入れてる。
372:デフォルトの名無しさん
12/04/30 04:41:22.34
Java
でちょっと前に話題になったARとか作れます.
で作られたWebサーバとかめっちゃ使われてます.
だけで作られたOSも、昔ちょっと話題になりました.
はどこでも動きます.PCや携帯電話,Android,車載機器など.WindowsやLinux(組み込み系Linux),MacOSが動いていれば動かせます.もちろんWindowsで開発してMacで動かせます.
は少し遅いです.遅い部分はJavaの利点から生まれるので,どうしても遅いと感じるならC畑へ行ってください.
は様々なアドオンを自由に組み合わせられます.ちょっと複雑ですがパッケージやJNIを使えば何も恐れることはありません.Jnodeがそれを実証しています.
373:デフォルトの名無しさん
12/04/30 04:47:25.30
>>372
ほうほう。
なかなか便利ですなぁ。
ありです。
374:デフォルトの名無しさん
12/04/30 04:50:52.29
>櫻庭 祐一=Java in the Box 主筆
さんもitpro.nikkeibp.co.jp(日経)やatmarkit.co.jp(itmedia)に群がっているit土方相手にしないとやってけないなんて落ちたな
windows it土方に対してjavafxやswingなどjava se clientをいくら訴求しても理解できるはずないのにw
375:デフォルトの名無しさん
12/04/30 05:01:48.65
>>372
昔のSUN vs MS訴訟の結果と同じで、AndroidはJavaではありません。
しかも旧SUN(Oracle)からJavaのライセンスも得てません。
376:デフォルトの名無しさん
12/04/30 05:49:47.62
>>372
少し遅いとか妄想で語るな
377:デフォルトの名無しさん
12/04/30 06:35:44.34
>>372
>>263
378:デフォルトの名無しさん
12/04/30 07:41:47.15
[すこし遅い]んじゃなくて「とんでもなく遅い」な
SQLとなんかフレームワーク合わせただけのドカタ仕事なら問題にならないけど
379:デフォルトの名無しさん
12/04/30 08:05:22.37
Javaは最速に近い
380:デフォルトの名無しさん
12/04/30 08:08:57.54
問題にならないならそれでじゃないですか
381:デフォルトの名無しさん
12/04/30 08:09:22.29
問題にならないならそれでいいじゃないですか
382:デフォルトの名無しさん
12/04/30 08:24:23.71
遅いって何と比べてんだろ。
同等の機能を持った他の言語と比べないと意味ないよね。
マルチプラットフォームでOOPで、一定以上の普及率を持った
とんでもなく遅くはない言語知りたいな
383:デフォルトの名無しさん
12/04/30 08:35:26.85
言語?
384:デフォルトの名無しさん
12/04/30 09:13:07.19
AndroidはJavaではありません(キリッ
385:デフォルトの名無しさん
12/04/30 09:18:23.23
>>372
386:デフォルトの名無しさん
12/04/30 09:49:27.25
Java APIのサイトに繋がらないのは自分だけですか?
387:デフォルトの名無しさん
12/04/30 09:58:16.11
あ、SE7のページなら繋がりました。お騒がせしました。
388:デフォルトの名無しさん
12/04/30 10:01:12.20
Sunのページ死んでるのにGoogle先生いつまでも引用するんだぜ
ボケちゃったのかな・・・
389:デフォルトの名無しさん
12/04/30 11:46:06.52
>>382
有名どころだとC++か
NativeClient上で動かすかVM上で動かすかで
パフォーマンスが結構変わるけど
390:デフォルトの名無しさん
12/04/30 11:52:27.49
C++(RTTI付き)でコンパイルしたプログラムってそんなに早いんですか?
391:デフォルトの名無しさん
12/04/30 11:56:20.59
ベンチマーク嫁
392:デフォルトの名無しさん
12/04/30 12:00:46.62
RTTIはサイズが肥大するだけで速度関係ないだろ
速度的に言えば、SIMDが使えるのとハンドルを使わず直アクセスしてる点、
広域に最適化される点と、最初から最適化されてる分早い
仮想関数でJavaに負ける時もあるが、オブジェクトの実際の型が変わらないなら
親クラスで渡された時でも、派生クラスの持つ実際の関数をインライン展開する
コンパイラーが増えたんでそういうケースが問題になる事も減った。
393:デフォルトの名無しさん
12/04/30 12:08:14.22
現実問題として、大規模で速度が必要だったり複雑な処理して重いプログラムはだいたいC++で作られてるだろ。
それが答えだ。
394:デフォルトの名無しさん
12/04/30 12:12:52.44
ネイティブとの速度差の議論は、jvmではjitコンパイルを導入してc++にある程度追いつき、次にllvmのようなネイティブで利用可能なリソースに最適化したスマート・コンパイルがなされて、
今のjvm技術ではc++とほぼ同等、再コンパイルしてない古いc++プログラムなら追い越してるって聞いてますよ。
395:デフォルトの名無しさん
12/04/30 12:15:20.82
>>267
396:デフォルトの名無しさん
12/04/30 12:23:28.58
>>394
聞くのは勝手だが自分で試せ
あと、VMかNativeかは言語関係ない
VM用に吐いたバイナリーとネイティブ用に吐いたバイナリーを比較するなら
同じ言語で書いたVMコードと、ネイティブコードを比較しろ
397:デフォルトの名無しさん
12/04/30 12:25:05.90
お前がなwww
398:デフォルトの名無しさん
12/04/30 12:29:21.17
C++に取り付かれると人格だけじゃなく頭まで壊れちゃうって本当のことなんですかぁっ?!
399:デフォルトの名無しさん
12/04/30 12:31:19.56
たぶんそうです
Javaも例外ではありません
400:デフォルトの名無しさん
12/04/30 12:35:08.52
それならC#に行っちゃった人はどうですか?
C#はドットネット戦略の中心でありマイクロソフトの虎の子ですよ?!
401:デフォルトの名無しさん
12/04/30 12:36:15.74
スレチ
402:デフォルトの名無しさん
12/04/30 12:39:25.32
C++よりCの方が速えー速えー言うけど、実際はCの標準ライブラリと<algorithm>つかって
書いただけならC++の方が速いしな。型情報を元に最適化出来る場合は10倍以上速くなったりする。
実測有るのみだ。
403:デフォルトの名無しさん
12/04/30 12:43:27.28
コンパイラーの出来しだいだな。
404:デフォルトの名無しさん
12/04/30 12:45:13.16
ジャバでは、プログラムの速度がクリティカル・イシューな時はあまり使わず他の方法を検討します。
405:デフォルトの名無しさん
12/04/30 12:52:21.44
だな
406:デフォルトの名無しさん
12/04/30 14:24:11.23
こんなコードなんですけど
URLリンク(ja.pastebin.ca)
public synchronized int getX() { return x; } の 「synchronized」 って必要なんですか?
407:デフォルトの名無しさん
12/04/30 14:28:20.63
ないな。
それはともかく、ページの広告がウザすぎて開いた瞬間閉じようかと思った
408:デフォルトの名無しさん
12/04/30 14:32:14.63
406
すんません、理由をそえておながいします
409:デフォルトの名無しさん
12/04/30 14:45:13.66
まず必要な理由を言ってみてもらわないと
410:デフォルトの名無しさん
12/04/30 14:45:56.95
排他掛けるなら座標クラスを扱ってる箇所に掛ける必要が有るだろ
x, yを返すだけってレベルじゃ要らん。xとyの2つの値を設定してるような
不可分な操作にはつける必要が有るけど。
411:デフォルトの名無しさん
12/04/30 15:46:26.29
そのメソッドの処理中に他のスレッドから呼び出されたら困るならsynchronizedつければいい
>>406を見るとsetXY()している間にgetX()が呼べたりするから設計から間違ってる気がする
412:デフォルトの名無しさん
12/04/30 15:50:48.28
呼べたりはしないでしょ
413:デフォルトの名無しさん
12/04/30 16:53:14.10
synchronizedは異なるブロックでも同期するんだね
あまり使わないから知らなかった
でもgetX()してgetY()する前にsetXY()が呼ばれる可能性はあるね
414:デフォルトの名無しさん
12/04/30 17:23:09.24
俺ならZahyoクラスにsynchronizedなんて付けない。
そのかわり同期はZahyoクラスを使う側に任せる。
synchronized(zahyo){
zahyo.set(x,y);
}
synchronized(zahyo){
x = zahyo.getX();
y = zahyo.getY();
}
415:デフォルトの名無しさん
12/04/30 17:33:16.09
みんなinterfaceってどう定義してんの?
自分はhoge1のように定義してるけど、皆さんの意見を聞いてみたいです。
interface test {
public abstract void hoge1();
public void hoge2();
abstract void hoge3();
void hoge4();
}
416:デフォルトの名無しさん
12/04/30 17:35:58.76
hoge4
無駄なものを書く必要はない
417:デフォルトの名無しさん
12/04/30 17:38:53.28
>>415
public abstract ここ非推奨な書き方だろ
418:デフォルトの名無しさん
12/04/30 17:47:45.55
うむ
419:デフォルトの名無しさん
12/04/30 19:43:41.75
>>415
一番上だな。
public abstract が暗黙かどうかいちいち頭切り替えて読み書きするの面倒だし。
420:デフォルトの名無しさん
12/04/30 19:47:21.25
一番下に決まってるだろ
421:デフォルトの名無しさん
12/04/30 20:11:25.51
句読点省略するような奴は省略するって事か。
422:デフォルトの名無しさん
12/04/30 20:20:06.51
ちがうよ
推奨が一番下なんだよ
423:デフォルトの名無しさん
12/04/30 20:24:32.67
コーディング規約による
とにかく書けるものは書け派(1)と書かなくても良いものは書くな派(2)にわかれる
駆け出しプログラマなら(1)の方が読みやすいかもしれない
それなりに訓練されたプログラマなら(1)は冗長で目障りだという
良く訓練されたプログラマなら(1)でも(2)でもどうでも良くなる
424:デフォルトの名無しさん
12/04/30 20:33:23.91
そんなとこで個性化してガラパゴス化する意味なんてないぞw
ほら本家から引用だ
The Java Language Specification
Java SE 7 Edition
9.4. Abstract Method Declarations
It is permitted, but discouraged as a matter of style, to redundantly specify the public and/or abstract modifier for a method declared in an interface.
425:デフォルトの名無しさん
12/04/30 20:46:38.46
redundantly specify っちゅうこっちゃ!
426:デフォルトの名無しさん
12/04/30 20:58:59.18
そんなに権威がありがたいならSunのコーディング規約に則って8タブ4インデントにしてろ
427:デフォルトの名無しさん
12/04/30 21:06:40.58
googleさんのコード見たらhoge4だった
428:デフォルトの名無しさん
12/04/30 21:10:36.06
エディタと勘違いしてるアホがいますなw
429:デフォルトの名無しさん
12/04/30 21:11:00.74
public abstract
interfaceのこれってそのうち廃止になるんじゃないの?
430:デフォルトの名無しさん
12/04/30 21:11:41.92
ピントずれた意見だな
431:デフォルトの名無しさん
12/04/30 21:12:04.48
挟まったか
432:デフォルトの名無しさん
12/04/30 21:15:08.69
>>429
廃止にメリットあんの?
433:デフォルトの名無しさん
12/04/30 21:16:32.70
っ It is permitted, but …
434:デフォルトの名無しさん
12/04/30 21:17:04.35
>>432
コンパイルプロセスの単純化
435:デフォルトの名無しさん
12/04/30 21:17:38.40
>>434
他にないって事か。
436:デフォルトの名無しさん
12/04/30 21:18:47.21
<div class="btns"><a href="#" class="button">Clear</a><a href="#" class="button" onClick="document.getElementById('form').submit()">送信</a></div>
上のタグでメールフォームの送信、クリアを作成しているが、#の位置には何を入れるとメールがWEB上から上手く送信できるようになるのでしょうか?
そもそもこのスレで良いのかも判らないですが…、お教えいただけると助かります。
437:デフォルトの名無しさん
12/04/30 21:20:13.52
Javaスクリプトさんが現れました
438:デフォルトの名無しさん
12/04/30 21:20:45.84
>>436
Web製作板へいけ
439:デフォルトの名無しさん
12/04/30 21:21:08.43
>>435
ないよ。ただ他の言語じゃよくやってるじゃん。
interfaceで修飾子が無くなれば、interfaceブロックに入ってから
修飾子除去プロセスが不要になって若干速くなる。
あとコンパイラのinterfaceに対する特殊化部分も簡略化できるよね。
OpenJDK見ると無駄そうで仕方ない。
440:デフォルトの名無しさん
12/04/30 21:22:31.30
>>432
小汚いコードを見なくて済むようになる
441:デフォルトの名無しさん
12/04/30 22:03:29.69
>>439
普通にコンパイラ書いていれば、interfaceのメソッドに付けられる修飾子から
public と abstract のフラグを消すだけだから大した簡略化にはならないよ。
442:デフォルトの名無しさん
12/04/30 22:06:42.79
interfaceのメソッドに付けられる修飾子にはアノテーションが残っているから
って付け忘れた。まぁ、わざわざ書かなくても判ると思うけど。
443:デフォルトの名無しさん
12/04/30 22:07:39.74
OpenJDK見てみれば?
一部クラスと同じ処理呼び出してるけどアレ無駄だよ。
そのうえ、privateとか他のキーワードを弾く処理まで入ってんだから。
444:デフォルトの名無しさん
12/04/30 22:11:59.93
それ単にリファクタリングした方がいいってだけじゃね?
ぶっちゃけ簡略化しても焼け石に水でしょ。
445:デフォルトの名無しさん
12/04/30 22:14:22.93
そんなことよりSAMタイプについて語ろう
446:デフォルトの名無しさん
12/04/30 22:18:31.13
そうは言っても残しておくメリットなんて全然ないし。
JBossみたいな新しくコンパイラ作る際に¥は、クラスと同じ修飾子処理の部分外して、
全部public abstract属性固定にし、
privateとかのキーワードチェックだけにできる理由じゃん。
447:デフォルトの名無しさん
12/04/30 22:19:32.58
¥はうち間違い。無視して。
448:デフォルトの名無しさん
12/04/30 22:25:11.18
>>446
普通のコンパイラは>>441-442だからどうでもいい。
互換性問題になるから残すメリットはある。
449:デフォルトの名無しさん
12/04/30 22:32:00.20
自分の狭い用途や視野でしか見えないから
互換性なんて思いつかないんだろ。
450:デフォルトの名無しさん
12/04/30 22:34:39.09
>>424
そもそも、これ何で非推奨にしたんだろ?
implements @protected InterfaceName とかすると
protectedなメソッドの実装義務が発生するとかやりたかったのだろうか?
やっぱり違うな。
451:デフォルトの名無しさん
12/04/30 22:36:12.41
JLS2ndの時には既に非推奨だったな。
452:デフォルトの名無しさん
12/04/30 22:37:24.91
JLS1stからすでに非推奨だったりする。
453:デフォルトの名無しさん
12/04/30 22:48:00.72
>>448
だからもう非推奨なんだから無駄だし捨ててもいいんじゃねと言ってるだけ。
互換性なくなるのは解ってるよ。それでも既存のキーワードを廃止する言語はあるんだから。
454:デフォルトの名無しさん
12/04/30 22:57:50.59
互換性を上回るメリットを提示できないと廃止は難しいんじゃね?
455:デフォルトの名無しさん
12/04/30 23:14:22.82
>>453
非推奨って言っても全然守られてない非推奨だからなぁ。
JDKのソースにすら public つけてるコードが大量にあるし。
456:デフォルトの名無しさん
12/04/30 23:41:56.42
新しく作るなら、だからJDKの古いこーは問題ない
457:デフォルトの名無しさん
12/04/30 23:42:11.20
コードは
458:デフォルトの名無しさん
12/05/01 00:20:59.51
>>406
URLリンク(www.javapractices.com)
set が syhchronized なら 当然 get も synchronized でないといけない
459:デフォルトの名無しさん
12/05/01 00:28:00.78
ダメな記事引用するな
460:デフォルトの名無しさん
12/05/01 00:28:24.06
不可分じゃなけりゃ理屈上要らんけどな
461:デフォルトの名無しさん
12/05/01 00:35:23.92
これ真似したらダメな悪例の典型だぞ
462:デフォルトの名無しさん
12/05/01 02:16:15.54
406
すんません、なぜダメなのか理由をそえておながいします
463:デフォルトの名無しさん
12/05/01 02:30:36.22
synchronizedは必要だぜ
マルチスレッド プログラミングの常識だろ
複数のコアをもつプロセッサでは、あるプロセッサが変更した値を
別のプロセッサからも見えるようにする必要があるわけ
javaではsynchronizedブロックがこの役割を果たしている
「java メモリーの可視性」 でググればたくさん出てくるぜ
464:デフォルトの名無しさん
12/05/01 02:37:20.66
AtomicReference
465:デフォルトの名無しさん
12/05/01 02:40:51.60
>>462
不可分操作でなく無駄だから
同期プリミティブを理解してないバカに見えるから
466:デフォルトの名無しさん
12/05/01 02:56:00.41
ぬるぽ → ガッ ってあるじゃん
俺ついこないだまで「ガッ」ってようするにcatchすることだと思ってたんだけど
wikiみたら 「殴る」だったため」という説と「Javaの例外(エラー)なので見つけたら叩くのはあたりまえ」という説の2つが挙げられている
なんだとさ
みんな知ってた?
467:デフォルトの名無しさん
12/05/01 03:41:42.34
>>466
ガッ!
468:デフォルトの名無しさん
12/05/01 05:44:29.77
C++のベテランさん(unmaneged windows,linux,gnome,kde)たちはGUI Tool Kitは何使ってるのかはいくら調べても出てこないので、C++さんはモーダンなUser InterfaceつまりUI作ったことないしUXに関心もなければMVCなどGUI設計の方法論も知らないのかなって思ってます。
469:デフォルトの名無しさん
12/05/01 06:13:39.78
ナニイッテンダ?
470:デフォルトの名無しさん
12/05/01 06:35:39.20
最近C++のベテランさんがよく出没するのでTKは何使ってるのか聞いてみたかっただけです。
471:デフォルトの名無しさん
12/05/01 07:15:35.60
自分のポンコツ脳だと理解できない事態なので助力をお願いしたいです。
hoge1.java
public class hoge1
main
String st = "hogehoge";
hoge2 hoge2 = new hoge2(st);
hoge2.run();
hoge2.java
public class hoge2 implements Runnable
BufferedReader reader;
public hoge2(String st)
reader = new BufferedReader(new StringReader(st));
try { System.out.println(reader.readLine()); } catch (IOException e) {}
public void run()
try { String line = reader.readLine();//lineがNullになる
System.out.println(reader.readLine()); } catch (IOException e) {}
runメソッドでlineにreaderを代入?したいのですが、nullになってしまいます。
hoge2メソッドの方でのSystem.out.println(reader.readLine())は
stの内容が出力されるので書き方はあっているような気がするのですがそれ以上の事が解りません。
恐らく無知故の基本的な間違いだと思うのですが、どうすればいいでしょうか。
472:デフォルトの名無しさん
12/05/01 07:21:35.63
>>471
舌かんでしね
473:デフォルトの名無しさん
12/05/01 07:34:11.39
だなw
474:デフォルトの名無しさん
12/05/01 08:38:23.67
わざと読みにくいようにして貼り付けたのか?
BufferedReader#readLine()はそれが正しい動作だからちゃんと勉強しろ
475:デフォルトの名無しさん
12/05/01 08:55:51.26
>>465
「なぜ無駄なのか」
そこがいちばん知りたいんです。
理由をおしえてくださいませんか。
476:デフォルトの名無しさん
12/05/01 08:59:58.62
お金持ってないようなのでお断りします
477:デフォルトの名無しさん
12/05/01 09:12:33.44
ホントは知らないんでしょw
478:デフォルトの名無しさん
12/05/01 09:23:16.89
>>475
無駄じゃないよ。synchronized必要
setterにsynchronizedを付けるならgetterにも付けないと不釣合いだろ
カッコ悪いだろ
ここを嫁
URLリンク(gee.cs.oswego.edu)
final class VFloat {
private float value;
final synchronized void set(float f) { value = f; }
final synchronized float get() { return value; }
}
上記getメソッドにsynchronizedが無い場合、setメソッドでセットされたはずのvalueの値が
別コアで実行される別スレッドから読み出せないことが有りうるんだよ
なぜなら、高度に最適化された優秀で賢いコンパイラは変数をメモリーではなく
CPUのレジスターに割り当てたりすることもあるからだ
synchronizedの入口と出口でマルチコアCPUのコア間の不整合が解消されるしくみだ
479:デフォルトの名無しさん
12/05/01 09:30:28.34
synchronizedつけさえすればいいと思ってるのはアホ
480:デフォルトの名無しさん
12/05/01 09:36:41.44
別コアとかレジスターとか、C++なら気にする必要はあるでしょうけど・・・
481:デフォルトの名無しさん
12/05/01 09:46:42.75
>>475
なぜ必要なのか説明してみ
482:デフォルトの名無しさん
12/05/01 09:48:21.77
>>471
最初のsystem.outをコメントアウトすればわかる
483:デフォルトの名無しさん
12/05/01 11:38:51.38
>>471
なぜファイル名も書くのかwww
484:デフォルトの名無しさん
12/05/01 11:49:12.15
>>478
かっこいいなぁ 俺英語読めん
synchronizedの使い方もよくわからん
いつまでたっても初心者から抜けれんわ
「synchronized」とか解説してる入門書なくない?
485:デフォルトの名無しさん
12/05/01 11:55:48.41
>>484
結城本嫁
486:デフォルトの名無しさん
12/05/01 11:57:55.80
>>485
ありがとうございましゅ
結城さんの本はデザインパターンの本しか持ってなくて
それも5パターンぐらいまでしかまだ理解できてないや……
知識レベルがカスなことは自覚してるんだが上達したいなー
487:デフォルトの名無しさん
12/05/01 12:00:46.54
馬鹿には無理
488:デフォルトの名無しさん
12/05/01 13:13:53.00
>>475
何度も言うがgetの中身が不可分操作じゃないからつける必要がない
つけてしまえば速度が下がる
>>475 の話は、そもそもvolatileつけてたら関係ない
JavaのvolatileはC++のvolatileと違ってアトミック性を保証するためのものだ
489:デフォルトの名無しさん
12/05/01 13:31:36.73
× >>475 の話は、そもそもvolatileつけてたら関係ない
○ >>478 の話は、そもそもvolatileつけてたら関係ない
490:デフォルトの名無しさん
12/05/01 15:46:10.43
『Java並行処理プログラミング』わかりやすいからら読んどけ
491:デフォルトの名無しさん
12/05/01 16:15:43.10
volatileはアトミックじゃないぞ。xとyが関連するならvolatileじゃ足りん。
それよりZahyoにsynchronized付けるんじゃなくてZahyoを使う方にsynchronized付けたほうがいいんじゃないの?
492:デフォルトの名無しさん
12/05/01 16:30:36.46
>>491
xかyいずれかのset/getでアトミックが保たれてるから、話の流れとしては間違ってないんだよ。
結局Zahyoを使う側で同期をとるってのが正解。
493:デフォルトの名無しさん
12/05/01 16:41:37.32
不変クラスにしよう
494:デフォルトの名無しさん
12/05/01 16:45:08.54
>>406は実行環境のver次第でJMMが変わるから環境書け。
古いJMMならvolatileをsynchronizedするのは正しい。
495:デフォルトの名無しさん
12/05/01 16:50:06.99
お前ら、稀なケースばかり考えるんじゃなく常識の範囲で考えろよ。
相手はどう考えても初心者だぞ。古いVMつかってるかどうかとか考える必要ないだろ。
496:デフォルトの名無しさん
12/05/01 16:58:20.23
俺はこのネタついては既にスルーしてるw
497:デフォルトの名無しさん
12/05/01 16:59:32.24
どっちにしてもZahyoインスタンスがリオーダーされたら意味ないから使う方のソースも見てみないと
498:デフォルトの名無しさん
12/05/01 17:03:11.27
>>241
499:デフォルトの名無しさん
12/05/01 17:04:28.76
たしか使う方のソースも付いてた
500:デフォルトの名無しさん
12/05/01 19:09:37.15
>>474>>482
半角スペース使ったため見難くなってしまって申し訳ないです。
bufferreader周りを勉強し直してみます。
ありがとうございました
501:デフォルトの名無しさん
12/05/01 19:28:02.90
synchronizedを付けようがつけまいがどのみち間違っているから好きな方でどうぞ
502:デフォルトの名無しさん
12/05/01 22:43:56.50
>>492>>493>>501で終了~
503:デフォルトの名無しさん
12/05/02 00:54:05.93
カバにはリーム―
504:デフォルトの名無しさん
12/05/02 00:55:51.63
メソッドの頭にシンクロつけるようなソース書くケースってあるのかな?
少なくともセッターゲッターにシンクロ宣言はつけないと思える
これはロックオブジェクトの概念を知れば理解できる
使う側から見た視点でタイミングを考えるべきに同意
それと同期、平行この2語を真に理解することはとても大事だと思う。
くどいけど セッターゲッター両方にシンクロ宣言つけたら
そのインスタンスに同時操作しようとするスレッドが、順序のない行列作っていろいろ面倒なことになる
505:デフォルトの名無しさん
12/05/02 01:02:33.45
java.util.concurrent この下にあるやつ
API眺めるだけで大体理解できると思うよ
506:デフォルトの名無しさん
12/05/02 01:41:20.46
実際get/setみたいな粒度の同期化なんてほとんど意味無いよ
利用する側は大抵もっと大きい単位でロックする必要がある
507:デフォルトの名無しさん
12/05/02 09:30:21.78
使う側で同期で答えでたやん
508:デフォルトの名無しさん
12/05/02 11:04:09.57
スレッドAで
sync(o){
o.ijiiji
}
スレッドBで
o.ijiiji
ってするとスレッドAがoをいじいじしている間は
スレッドBはoをいじいじできないの?
509:デフォルトの名無しさん
12/05/02 11:11:23.29
スレッドBの方で排他制御してないなら自由に触れる。
510:デフォルトの名無しさん
12/05/02 14:52:58.95
なにかを自作しようと思うとほとんどサンプルコードの改変になって悩んでます
自分で作った気がしないのですが……
511:デフォルトの名無しさん
12/05/02 15:02:48.96
サンプルコードの改変で作れるようなものなんて、今更君が作らなくても既に遥かに優れたものが世の中にある
っていうか、普通にPC使っててこういうのが欲しいと思ったときに
まだ誰もそれを作ってないなんてことはまずありえないから、はっきり言って時間の無駄
512:デフォルトの名無しさん
12/05/02 15:06:15.34
そうですよね
ではプログラミングはどのように勉強していけばいいのでしょうか?
513:デフォルトの名無しさん
12/05/02 15:20:45.67
趣味ならAndroidでもやれば
GUIなら.NETやC++の方がいいしちょっとした作業の自動化ならスクリプト言語の方がいい
514:デフォルトの名無しさん
12/05/02 15:31:45.66
何言ってんだ、コイツw
515:デフォルトの名無しさん
12/05/02 16:01:19.40
>>511
このいいかたでは、
サンプルコードの改変がダメのようにきこえてしまうが、
ライブラリをべんきょうするとき、サンプルがあればたすかるね
516:デフォルトの名無しさん
12/05/02 16:01:42.73
スマホアプリいいよ
PCではサンプルコードの改変レベルの糞アプリでもスマホで出せば評価される
517:デフォルトの名無しさん
12/05/02 16:54:11.08
こういうのが欲しい!と思って無かったから作った人がここに
518:デフォルトの名無しさん
12/05/02 17:47:33.65
public class Tc {
public Tc() {
}
}
Tc tc1; //①
クラスについて初歩的な質問なんですが
こういうふうにクラス宣言して主クラスの最初で①のように定義すると通るのですが
他の場所 onCreate()内 等で①の定義をすると
’ローカル変数 tc1 は読み取られません’とEclipseに怒られてしまい実際実行されません。
その他の場所で①の定義をするにはどうすればいいですか?
519:デフォルトの名無しさん
12/05/02 17:54:52.81
それは意味ないローカル変数を宣言した時に出る
520:デフォルトの名無しさん
12/05/02 18:10:35.41
>>518
言語仕様的なエラーじゃなくて、
プログラムミスの可能性が高いから警告にしたりエラーにしたりできるようになってる。
Window->Preferences->Java->Compiler->Errors/Warnings->Unnecessary code->Value of local variable isnot used
Project->Properties->Java Compiler->Errors/Warnings->Unnecessary code->Value of local variable isnot used
を ignore にすれば警告かエラーは消える。上はワークスペース全体の設定で下はプロジェクト固有の設定。
ignore にするのは推奨しないけど。
521:デフォルトの名無しさん
12/05/02 18:27:02.03
>>518
ローカル変数を宣言しても、それを使っていなければ宣言した意味がないので、親切にも注意してくれているんだ
ちゃんと使えば文句言われない
522:518
12/05/02 18:33:02.52
ローカル変数でなく class と宣言してるはずなんですが。
あと上の記述だとスルーだけになるのですが
Tc tc1 = new Tc();
こう書くとエラーになってしまいます。
これはどういうことでしょうか?
523:デフォルトの名無しさん
12/05/02 18:35:25.86
だから、そのローカル変数 tc1 を、使ってないだろう?
524:デフォルトの名無しさん
12/05/02 18:38:25.42
ああ、最初にグローバルで①の記述を必ずやらないと
途中から書いてもクラスとみなされないということですかね。
public 書いてるからどこからでも参照できると思ってました。
525:デフォルトの名無しさん
12/05/02 18:42:43.93
あとローカル変数ならば
Tc tc1;
じゃなくて
int tc1;
とかじゃないでしょうか?
コンパイラはそういう判断かと思ったんですが。
526:デフォルトの名無しさん
12/05/02 18:43:42.30
classを囲う{}の外に書いたら怒られるのは当たり前
527:デフォルトの名無しさん
12/05/02 18:47:10.73
>>525
それは変数の型が違うだけだ (プリミティブ型 or クラス型)
ローカル変数かクラス変数かインスタンス変数かという変数の種類は変わらない
528:デフォルトの名無しさん
12/05/02 18:50:07.46
変数とスコープを勉強しなおしてこい
529:デフォルトの名無しさん
12/05/02 18:55:31.98
>>526
class内のmainで定義すればいいですかね。やってみます。
530:518
12/05/02 19:07:06.63
ここまでで冒頭でやればいいとわかったのですが
最初にグローバルにクラス作るのでなく
途中から自由にクラスインスタンス作ったり外したりする方法はないのでしょうか?
531:デフォルトの名無しさん
12/05/02 19:12:27.46
Tc tc1 = null;
tc1 = new Tc();
tc1 = null;
とか
532:デフォルトの名無しさん
12/05/02 19:25:51.30
>>531
やってみます。
533:デフォルトの名無しさん
12/05/02 21:55:11.42
Javaを初めて勉強するのにお勧めの教本とかってありますか?
プログラミング未経験です
534:デフォルトの名無しさん
12/05/02 21:56:04.90
今までファイル読み込みが面倒なのでファイルをクラスに変換するマクロで、
クラス内にファイルの内容を直接埋め込んでいたのですが、
今日、少し大きなファイルを埋め込んでみたところ。
「static イニシャライザーのコードが 65535 バイトの制限を超えています」
まさかJava自体にこんな制限があったなんて…orz
うわーどうしよう。
535:デフォルトの名無しさん
12/05/02 21:59:32.35
コード自動生成してるんなら適当にメソッド分けるようにすればいいだけじゃね
536:デフォルトの名無しさん
12/05/02 22:21:38.06
もしものすごく膨大な定数を使いたかったら、ファイルにまとめて読み込まなければならないってこと?
537:デフォルトの名無しさん
12/05/02 22:26:39.16
今はどんな言語でも、膨大な定数を自前で保持しないだろ。
昔はBASICのDATAにマシンコード持たせてたけどさ。
538:デフォルトの名無しさん
12/05/02 22:30:58.27
ロードに時間かかるしなあ
Javaじゃ用途的にあんまり問題にならないだろうけど
クライアントアプリだととりあえず起動してなんか表示してからロードするほうが
ストレスを感じさせにくい
539:534
12/05/02 22:37:53.08
画像ファイルをクラスにするくらい分けないと思ったのですが…。
とりあえずメソッドを分割してみます。お騒がせしました。
540:デフォルトの名無しさん
12/05/02 22:49:17.75
ファイル添付できない上にコード量の制限があるBTSにバグ報告するとき
gzip + base64 で文字列化とかはやったな。
541:デフォルトの名無しさん
12/05/03 08:12:49.48
日経ソフトウェア買って読んでみたら半分いや5分の1ぐらいしか理解できなかった
みんなこんな本ふむふむと読んで活用できるんでしょ? 尊敬させていただきます
入門書のあとみんなどうやって成長していってるの?
542:デフォルトの名無しさん
12/05/03 08:30:12.61
あなたのレベルではまだ早いってことですよ。
そのレベルで紙情報に対して毎月1000円だすつもりなら、オール日本語アイテー情報紙のPCfan(マイナビ)がいいんじゃないですか。
543:デフォルトの名無しさん
12/05/03 08:44:39.91
レベルにあってないことがわかりました 自分では活用できそうにありません
1000円は勉強代ですね
ただPCfanはさすがに読んでてもつまらんです それにあれ休刊になったんじゃ?
544:デフォルトの名無しさん
12/05/03 09:05:36.23
1000円の勉強代金を支払えば即すべてのスキルが得られるわけではありません。
545:デフォルトの名無しさん
12/05/03 09:17:42.67
ゆとり(笑)
546:デフォルトの名無しさん
12/05/03 11:44:25.74
日経ソフトウェアって、そもそも技術者が読むよーなのだっけ?
技術者じゃない人が読んで、理解した気になるための雑誌じゃなかった?
547:デフォルトの名無しさん
12/05/03 11:45:24.94
あほやな
自分よりレベルの高い本を買ってわからなくても適当に読んでれば
知らないうちにレベルアップしてるのに
自分と同レベルの情報見ててどうすんだよw
548:デフォルトの名無しさん
12/05/03 11:52:10.90
ステマ乙
549: ◆QZaw55cn4c
12/05/03 12:08:18.68
スレリンク(classical板:4番)
550:デフォルトの名無しさん
12/05/03 12:11:57.82
間違って日経NETWORKというのを定期購読してしまって
なんとなく眺めてたらいつのまにかネスペが取得できてしまった。
ネスペ取得者にはこういう人が多い。
551:デフォルトの名無しさん
12/05/03 13:34:59.55
日経ソフトウェアは中学生くらいが読むもんだけど本当に初歩の初歩から書いてあるから専門外の言語の雰囲気掴むにはいいよ。
552:デフォルトの名無しさん
12/05/03 14:03:32.98
コードが書いてある雑誌って減っちゃったからなー
特にJavaとか紙面に乗せると文字数食うせいで
解説とかめちゃくちゃはしょってあるから分かりにくいとは思う
553:デフォルトの名無しさん
12/05/03 14:11:53.12
分厚い技術書も大概だろ
コードで水増ししまくって内容がほとんどない
554:デフォルトの名無しさん
12/05/03 14:13:15.63
内容がないよう・・・ぷぷっ
555:デフォルトの名無しさん
12/05/03 14:34:30.52
日本の本はそうだな。海外のはコードはwebかCDに収めて解説がずらずらと書いてあって1000Pとかある
556:デフォルトの名無しさん
12/05/03 16:13:49.99
日本語では簡潔に説明できることが英語では単語でものすごく水増しされたような文章になるからね。
557:デフォルトの名無しさん
12/05/03 16:15:07.48
英語の本読んだことねーなら無理するな
558:デフォルトの名無しさん
12/05/03 16:27:25.03
どうでもいい質問すみません
クラスの変数とメソッドの引数が同じ意味の場合、どう書き分けたら便利でしょう?
たとえば
class Human{
int weight_1;
public setTall(int weight_2){
weight_1 = weight_2;
}
その他メソッド色々
}
というクラスを作ると、eclipseだとHuman#setTall()を呼び出すときの自動補完で
human.setTall(weight_2)
と勝手にweight_2も含めて入力してくれるので、引数を一般的な単語にしたいんですが
そうするとクラスの変数をそうじゃない名前にしなきゃいけなくて
今度はHumanクラスを書く際にその変数名が面倒になってしまいます。
ネットを検索するとm_weightとかmWeightとか_Weightにするといいというのもありますが
それだとHumanクラスを書く際に補完機能が使いづらくなってしまいます
(たとえばm_tallとm_weightがあると、mで補完させると両方引っかかってしまう)
559:デフォルトの名無しさん
12/05/03 16:31:51.10
>>558
this
あと、クラスの変数じゃないから。オレオレ定義で呼ぶな
560:デフォルトの名無しさん
12/05/03 16:33:00.25
public setTall(int weight){
this.weight = weight;
}
でいいじゃない
561:デフォルトの名無しさん
12/05/03 18:57:25.02
フィールドを"_"で始まる名前にしておけばローカル変数と混同しなくて便利なのに
562:デフォルトの名無しさん
12/05/03 19:42:58.87
スレッドをローカル変数だけに持ったままメソッドを抜けたらバグってワロタw
563:デフォルトの名無しさん
12/05/03 19:59:06.56
日本語でおk
564:デフォルトの名無しさん
12/05/03 22:15:25.77
テキストボックス(textBox)に値が入力されたらボタン(searchButton)を有効にする
ということをしたくて以下のように書いてみました。
this.textBox.addChangeHandler(new ChangeHandler(){
@Override
public void onChange(ChangeEvent event) {
if(!textBox.getValue().equals("")){
searchButton.setEnabled(true);
}
else{
searchButton.setEnabled(false);
}
}
});
これでも動作することはするのですが、テキストボックスからフォーカスを外さないとイベントが発生しません。
そうではなくテキストボックス入力中にボタンの有効・無効切り替えをできるようにしたいです。
KeyDownハンドラを使おうかとも思いましたが、一番キレイに実装するにはどうすればいいでしょうか?
565:デフォルトの名無しさん
12/05/03 22:25:28.27
そんなサンプルそこらに落ちてるだろ。あほか
566:デフォルトの名無しさん
12/05/03 23:58:30.87
チョンうぜぇ
567:デフォルトの名無しさん
12/05/04 05:16:24.46
private static final なメンバは普通実行時に変わらないけど
GWTとかでJSからオブジェクトを受け取る場合は変える事も出来るんだろうか?
568:567
12/05/04 05:26:05.20
transientとfinalのキーワードを持つフィールドは送受信されない。
という記述が見つかった。
finalなフィールドを外部から書き換える事は出来ないようだ
569:デフォルトの名無しさん
12/05/04 09:53:52.99
ヒント: const
570:デフォルトの名無しさん
12/05/04 12:32:44.07
Stringをbyte配列に変換するときに、
下記のように文字コードが指定できますが、
>byte charArray[] = target.getBytes("MS932");
byteって1バイトなので、文字コード指定したところで帰ってくる配列って変わらないんじゃないですか?
intなら各文字コードのマルチバイト文字の区切りで切り取るとかもできそうですが。
shift-jis読み取りのために一応つけてるんですが、これって意味がありますか?
571:デフォルトの名無しさん
12/05/04 12:34:37.79
データ列だからバイト配列なだけだ
1byte=1文字ではない
572:デフォルトの名無しさん
12/05/04 12:42:13.46
>>570
String s = "あ";
byte[] a = s.getBytes("MS932");
byte[] b = s.getBytes("EUC-JP");
byte[] c = s.getBytes("UTF-8");
System.out.println(Arrays.toString(a)); // → [-126, -96]
System.out.println(Arrays.toString(b)); // → [-92, -94]
System.out.println(Arrays.toString(c)); // → [-29, -127, -126]
指定した文字コードによって返ってくる配列ちゃんと変わるぞ
573:デフォルトの名無しさん
12/05/04 13:10:10.71
>>572
サンクスです。ファイルから読み込んだ場合と混同してました。
そうか、Stringから変換した場合、内部で文字コード変換が走るんですね、納得です。
574:デフォルトの名無しさん
12/05/04 13:12:16.67
たぶんわかってないなこれ
575:デフォルトの名無しさん
12/05/05 09:09:01.77
質問です。インターネットアクセスするコードの
01 URL url = new URL("http://~~~~");
02 HttpURLConnection connection = (HttpURLConnection)url.openConnection(); ※throws IOException
03 InputStream is = conn.getInputStream(); ※throws IOException
04 InputStreamReader isr = new InputStreamReader(is, "MS932"); ※throws UnsupportedEncodingException
05 BufferedReader br = new BufferedReader(isr);
06 String s = br.readLine(); ※throws IOException
07 conn.disconnect();
08 br.close(); ※throws IOException
という流れで
(1)
03のconn.getInputStream()にてIOExceptionが投げられた場合、conn.disconnect()の必要はありますか?
(2)
06のbr.readLine()にてIOExceptionが投げられた場合、
(A)conn.disconnect()の必要はありますか?
(B)br.close()の必要はありますか?
(1)はHttpURLConnectionのメソッドがエラー出してるんだしdisconnectされてて当然だろうと思うし
(2)はBufferedReaderのメソッドがエラー出してるんだしcloseされてて当然だろうと思ってしまいます。
特に(2)で仮にbr.closeしようと思ったらIOExceptionのcatch中さらにIOExceptionのcatchをするわけで
すごく変なコードになる気がします。
576:デフォルトの名無しさん
12/05/05 10:26:12.67
disconnect はそもそもまったく呼ばなくてもいいものなので必要あるかといわれればない
close は呼ぶべき
例外は回復不能なエラーばかりとは限らないから自動的に close されたりはしない・・・例えば SocketTimeoutException とか
変なコードは Java 7 からの新しい try-with-resources を使えば解決
577:デフォルトの名無しさん
12/05/05 11:12:45.03
全部をcatchせずにcloseするか判断するところまでthrowして、
そこでcatchしたらfinally内でcloseの方がすっきりしそう。
ライブラリやAPIの類が例外だしたらインスタンスの再利用はできないことが多いしw
578:デフォルトの名無しさん
12/05/05 12:46:42.40
>>576->>577
ありがとうございます
作ってるアプリのいくつかの機能で共通点が多かったので
サブルーチンのようなprivateメソッドを作って
メソッド1~3はできるだけシンプルになるようA~D内で完結させようとしてたんですが
アドバイス読んで、まとめて受けるようにしてみました。
昔ちょっとC言語で遊んだだけだったので「例外出さずにfalseやnullで返してくれたら楽なのに」って思ってたんだけど
逆にそうされたらそこで毎回チェックしてクローズ処理しなきゃいけないわけで、まとめて受けられる例外の方が便利ですよね
でもgotoっぽい性質もあって怖そうですね
クラス修正前{
機能1(){A;C;}
機能2(){A;B;}
private サブルーチンA(){処理、例外処理}
private サブルーチンB(){処理、例外処理}
private サブルーチンC(){処理、例外処理}
}
クラス修正後{
機能1(){try{ A;C; }catch(){ どこかでエラー発生 }finally{ クローズ処理 } }
機能2(){try{ A;B; }catch(){ どこかでエラー発生 }finally{ クローズ処理 } }
private サブルーチンA()throw e{処理}
private サブルーチンB()throw e{処理}
private サブルーチンC()throw e{処理}
private クローズ処理(){try{close()}catch{}}
}
579:デフォルトの名無しさん
12/05/05 13:00:59.04
>>578
キャッチなしのtry{}finally{}を一つ入れるとキレイになりそう。
580:デフォルトの名無しさん
12/05/06 14:10:27.96
JDK 1.7 がインストールできません。
@Windows7(x64) Ultimate
jdk-7u4-windows-x64.exe をD/L してダブルクリックしても
インストーラのダイアログが表示されません。
jdk-6u31-windows-x64.exe だと、問題なくインストールされます。
jre-7u4-windows-x64.exe をインストールしてパスを通したりしてますが
状況は変わりません。
どなたかお助けを。
581:デフォルトの名無しさん
12/05/06 14:16:48.07
もう一回ダウンロード
582:デフォルトの名無しさん
12/05/06 14:31:40.15
>>581
ありがとうございます。
ダウンロードし直してみましたが、ダメでした。
※1回目と2回目のファイルは同一でした。
困りました。
583:デフォルトの名無しさん
12/05/06 15:38:53.68
あきらめないで!
584:デフォルトの名無しさん
12/05/06 18:05:42.44
質問です。以下の文をもっとスマートに書く方法ってありますか?
swich文のcaseごとに同じメソッドを重複して書くのがちょっと微妙な気がするのです。
private void doWork(int stage) {
switch (stage) {
case 0 :
break;
case 1 :
method_1();
break;
case 2 :
method_1();
method_2();
break;
case 3 :
method_1();
method_2();
method_3();
break;
case 4 :
method_1();
method_2();
method_4();
break;
default :
break;
}
}
585:デフォルトの名無しさん
12/05/06 18:12:30.28
>>584
なんか設計からして変な気がする。
のはさておき、重複して書くのは常に悪というわけではない。
読み易さのためなら有る程度の重複は許される。
スマートってのは読み易いということだ。
君がこれからやろうとしている事はコードゴルフの類いなので、
僕のスマートの定義ではこれ以上のスマートな書き方は無い。
むしろ設計を見直す。
586:デフォルトの名無しさん
12/05/06 18:13:48.87
他に思いついたのは以下ですが、これも微妙な気がして。
private void doWork(int stage) {
if (stage == 0) break;
if (stage > 0) method_1();
if (stage > 1) method_2();
if (stage == 3) method_3();
if (stage == 4) method_4();
}
587:デフォルトの名無しさん
12/05/06 18:17:13.52
>>585
設計が変ですかね。確かに読みやすい気はしますが
記述的に無駄が多い気がして。
588:デフォルトの名無しさん
12/05/06 18:22:36.42
ほうら、スマートだろう?
private void doWork(int stage) throws Exception {
getClass().getMethod("method_" + stage).invoke(this);
}
589:デフォルトの名無しさん
12/05/06 18:47:58.16
>>588
うーん、見た目スマートですけど
コレジャナイ感がします。
設計が変というのはint stageごとにmethod()作れってことですかね
590:デフォルトの名無しさん
12/05/06 18:49:39.21
>>586 の方が良いだろ。
あと、ここに書くときは半角スペース2個を、全角スペース1個に置換しといて!
private void doWork(int stage) {
switch (stage) {
case 0 :
break;
case 1 :
method_1();
break;
case 2 :
method_1();
method_2();
break;
case 3 :
method_1();
method_2();
method_3();
break;
case 4 :
method_1();
method_2();
method_4();
break;
default :
break;
}
}
591:デフォルトの名無しさん
12/05/06 19:00:54.25
頭の中でのイメージは、代入させるint stageの値によって
doWork()内での処理ブロックの通過のさせ方を変えるような書き方をしたいんです。
たとえば、stageに4が代入されれば、method_1()を通過、method_2()を通過、
method_3()を飛ばしてmethod_4()を通過という処理をさせたいんですが、
これを視覚的にわかりやすく書けないものかとおもいまして。
592:デフォルトの名無しさん
12/05/06 19:36:16.90
ステートマシンだろ?
どうせ複雑になったらわかんなくなるからステートマシン図をちゃんと描いて保存しておいて
ソースの見やすさなんて無視でいいよ
593: ◆b.MfON/oOo
12/05/06 19:39:51.48
>>591 どぅ?
private void doWork(int stage) {
if (stage == 0) break;
if (stage > 0) method_1();
if (stage > 1) method_2();
if (stage >= 3){
if (stage == 3) {
method_3();
} else {
method_4();
}
}
}
594:デフォルトの名無しさん
12/05/06 19:42:31.76
int[] t = { 0, 1, 3, 7, 11 };
int x = t[stage];
if ((x & 1) != 0) method_1();
if ((x & 2) != 0) method_2();
if ((x & 4) != 0) method_3();
if ((x & 8) != 0) method_4();
595:デフォルトの名無しさん
12/05/06 19:54:54.81
>>588 > >>584=>>590 > >>586 ≒ >>593 >> >>594
メンテする視点で考えんと
596:デフォルトの名無しさん
12/05/06 19:56:45.23
ナに言ってんだかw
597:デフォルトの名無しさん
12/05/06 19:58:06.49
Javaは>>594みたいなことをする言語じゃないなとは思った。
598:デフォルトの名無しさん
12/05/06 20:03:19.01
>>592
画像のレイヤー表示的なことをしたいんです。でも同じようなもんですよね。
>>593
ああ、これは見やすいかもです。
>>594
う、頭から煙が。苦手な分野です。
またひとつ思いつきましたけど、いけてない気がします。
private void doWork(boolean flag_1, boolean flag_2, boolean flag_3, boolean flag_4) {
if (flag_1) method_1();
if (flag_2) method_2();
if (flag_3) method_3();
if (flag_4) method_4();
}
599:デフォルトの名無しさん
12/05/06 20:06:38.47
そんなんならbooleanの配列でいいじゃん
600:デフォルトの名無しさん
12/05/06 20:11:31.57
>あと、ここに書くときは半角スペース2個を、全角スペース1個に置換しといて!
なんで?
601:デフォルトの名無しさん
12/05/06 20:26:47.18
>>599
こうですか?わかりません。
private static boolean[][] stage =
{ //mth1 //mth2 //mth3 //mth4
{ false, false, false, false },//stage 0
{ true, false, false, false },//stage 1
{ true, true, false, false },//stage 2
{ true, true, true, false },//stage 3
{ true, true, false, true } //stage 4
};
private void doWork(boolean[] flag_) {
if (flag_[0]) method_1();
if (flag_[1]) method_2();
if (flag_[2]) method_3();
if (flag_[3]) method_4();
}
602:デフォルトの名無しさん
12/05/06 20:32:18.63
クズコード化プロジェクト?
603:デフォルトの名無しさん
12/05/06 20:35:27.09
>>602
ああ、、そんな気がしてきましたorz
604:デフォルトの名無しさん
12/05/06 20:36:03.79
どんな案が出てきたところで>>584がメモリを少々食いつつも
もっとも高速で実行できるということで良いですか?
605:デフォルトの名無しさん
12/05/06 20:43:03.77
高速?
求めてたのはスマートな書き方じゃなかった?
606:デフォルトの名無しさん
12/05/06 20:46:17.41
そうだな。
コードゴルフではなく、>>591 は 「視覚的にわかりやすく書けないものか」 と言っている。
607:デフォルトの名無しさん
12/05/06 20:48:38.93
>>604は私ではないですが、
見た目重複が少なく、視覚的にわかりやすい書き方を求めてます。
かつ、できれば処理的にも軽いほうがいいです。
608:デフォルトの名無しさん
12/05/06 20:50:03.22
馬鹿には無理
609:デフォルトの名無しさん
12/05/06 20:57:16.37
>>608
そうでしょうか。
では>>585でFAということにしようと思います。
お付き合いありがとうございました。
610:デフォルトの名無しさん
12/05/06 20:57:23.54
\u3010 の形式を普通の文字にしたいのですが、
どうやるのが一般的なんでしょうか?
\u除いてparseIntで文字コードに変換まではできたのですが、
そこからStringに戻すとこで躓いてます。
そもそもそんなめんどくさいことしなくても、
一発で変換できるような関数があるのでしょうか?
611:デフォルトの名無しさん
12/05/06 20:58:40.74
>>590の条件はともかくステートマシンならこんな感じで作るわ
// State間の情報は、Contextのオブジェクトで管理
Context context = new Context();
Stage1 stage1 = new Stage1( context );
Stage2 stage2 = new Stage2( context );
Stage3 stage3 = new Stage3( context );
// 各Stateが、doを実行した際返すStateを指定する。
// 例えば、doの結果が成功した場合の次のStateは、SuccessStateで指定し、
// doの結果がゲームオーバーした場合の次のStateは、GameOverStateで指定する。
stage1.setSuccessState( stage2 );
stage1.setGameOverState( stage3 ):
// クラスによってどんなset~Stateを持ってるかはバラバラ。この場合だと、実行完了後に必ずstate1に戻る
stage2.setNextState( state1 );
stage3.setNextState( state1 );
// ステートの実行は、こんなループやら、イベントを使って実行する。
State state = stage1;
while( null != state )
{
state = state.do();
}