5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

★★Java質問・相談スレッド146★★

1 :デフォルトの名無しさん:2011/06/26(日) 09:36:37.71
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。

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

前スレッド
★★Java質問・相談スレッド145★★
http://hibari.2ch.net/test/read.cgi/tech/1306857184/

次スレは>>950あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

2 :デフォルトの名無しさん:2011/06/26(日) 09:40:15.24
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 9
http://hibari.2ch.net/test/read.cgi/tech/1261232019/
■ SWT は --
Java 高速GUI SWT 3
http://hibari.2ch.net/test/read.cgi/tech/1164877399/

■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part22
http://hibari.2ch.net/test/read.cgi/tech/1295766416/
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 9
http://hibari.2ch.net/test/read.cgi/tech/1249357352/
■ Androidアプリの作成は --
【Google】Androidアプリ作成part8 ※ dat 落ち
http://hibari.2ch.net/test/read.cgi/tech/1297616354/

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 70 ★★ ※ dat 落ち
http://hibari.2ch.net/test/read.cgi/tech/1300067785/

3 :デフォルトの名無しさん:2011/06/26(日) 09:42:37.92
■ NetBeansに関する雑談は --
NetBeans Part6
http://hibari.2ch.net/test/read.cgi/tech/1273665879/
■ Eclipseに関する雑談は --
clipse統合M30【Java/C++/Ruby/Python/Perl】 ←検索にかからなかったので下のスレが立て直したスレッド
http://hibari.2ch.net/test/read.cgi/tech/1280027133/
Eclipse統合M31【Java/C++/Ruby/Python/Perl】
http://hibari.2ch.net/test/read.cgi/tech/1295886572/


**** 開発環境が必要の場合は ****
■ J2SE 5.0 (1.5.0)
http://java.sun.com/j2se/1.5.0/ja/
■ Java SE 6
http://java.sun.com/javase/ja/6/
■ Java SE 7(Early Access)
http://jdk7.java.net/download.html

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
http://www.java.com/ja

4 :デフォルトの名無しさん:2011/06/26(日) 11:26:03.77
すいません。学校の課題を質問させてください。超初心者で、朝から5時間かけてもわからなかったので質問させてもらいます。
問題
----------
疑似乱数を生成する java.util.Random クラスを使って、占いを行う Fortune クラス を作りなさい。
fortune メソッドを作成し、そのメソッドに String クラスのインスタン スを渡せば名前占いを、
また整数 (int) を渡せば誕生日占いをするようにしなさい。
うらないと誕生日占いのアルゴリズムは適当に決めなさい。

※ヒント:この占いでは、0 と 1.0 の間の double 型の乱数を 10 個生成します。
0.5 以上の 値が 10 回中7回以上あれば占いの結果を「絶好調!」とします。
0.5 以上の値が 10 回中 4 回以上7回未満あれば占いの結果を「まあまあ」とします。
0.5 以上の値 が 10 回中 4 回未満であれば占いの結果を「絶不調 orz」とします。
10 個の乱数値 と占いの結果をコンソールに出力します。
乱数のシードには、String クラスのイ ンスタンスを何とかして整数にした値やメソッドに渡された誕生日の整数そのもの を使えば良いでしょう。
----------
自分の方針としてはユーザーに名前であればひらがなで名前を入力してもらいその文字数に応じて占いをして
誕生日であればすべての数字を足した合計数に応じて占いをしようとしました。
しかし、具体的な方策ができずにググリ続けて5時間。もう無理です。助けてください。

5 :デフォルトの名無しさん:2011/06/26(日) 11:30:30.91
誰かJava宿題スレ立ててくれよぉ

6 :デフォルトの名無しさん:2011/06/26(日) 11:32:39.75
いやです

7 :デフォルトの名無しさん:2011/06/26(日) 11:45:03.44
こんなもん占いじゃねーよ
SHA-512とメルセンヌツイスタ使った課題に書き直すよう、講師に伝えてこい

8 :デフォルトの名無しさん:2011/06/26(日) 11:50:26.11
>>7ありがとうございます!そうなんですか(;´Д`)
とりあえず、この課題は片付けなければいけないんです。
今こんなプログラムをウェブで見つけて使えるかなとおもったんですが。。。
-----------
import java.util.Scanner;
import java.util.Random;

class Exercise05 {
public static void main(String[] args){
Scanner stdIn=new Scanner(System.in);

System.out.println("ゲームをする前に今日の運気を占いましょう");
System.out.println("");
System.out.println("あなたの名前をひらがなで入力してください:");
int x=stdIn.nextInt();
if(x==1){
Random rand=new Random();

int unnki=rand.nextInt(6);


if(unnki==0||unnki==4){
System.out.println("今日の運気は好調です。なんかクリアしそうな気がするぞ");
}else if(unnki==1||unnki==3){
System.out.println("今日の運気は不調です。ちょっと疲れ気味かな。ゲームをやって元気になろう");
}else if(unnki==2){
System.out.println("今日の運気は絶好調です。全部クリアしそうな気がするぞ");
}else{
System.out.println("今日の運気は絶不調です。落ち着いてやれば大丈夫だ");
}}}}

9 :デフォルトの名無しさん:2011/06/26(日) 11:57:21.41
おまえじゃ無理もう諦めろ

10 :デフォルトの名無しさん:2011/06/26(日) 12:02:10.70
>>9まじですか(;´Д`)頼みますorz


11 :デフォルトの名無しさん:2011/06/26(日) 12:32:37.78
GUI作れとか鯖立てろとかって言うんじゃなくてただ単純に占いをするだけのプログラムが書けないのか?
大丈夫か?

12 :デフォルトの名無しさん:2011/06/26(日) 12:33:40.01
unnti

13 :デフォルトの名無しさん:2011/06/26(日) 12:33:44.17
占いループと分岐のとこだけ書いておこう。
先生。正直、ループいらんのだが…


Random rnd = new Random();

/* ここでシード設定 */

int hit = 0;
for(int ct=1; ct<=10; ct++){
  if(rnd.nextDouble() >= 0.5) hit++;
}

String msg;
if (hit >= 7) msg = "絶好調";
else if(hit >= 4) msg = "まあまあ";
else msg = "絶不調";


Java宿題スレ立ててくれたら、残りの回答してやってもいい

14 :デフォルトの名無しさん:2011/06/26(日) 12:39:44.40
>>13レベルが足りなくて建てられませんでした。
もう無理か。。。

15 :デフォルトの名無しさん:2011/06/26(日) 12:54:48.14
すいません。お願いです。本当に半日かかってもできないんです(^_^;)
誰か助けてください>>4

16 :デフォルトの名無しさん:2011/06/26(日) 13:23:54.72
顔文字も sage ないのもムカつくんだが

17 :デフォルトの名無しさん:2011/06/26(日) 13:38:13.11
ニートのくせに黙れ

18 :デフォルトの名無しさん:2011/06/26(日) 15:57:53.27
いつも丁寧な回答ありがとうございます。
お手数おかけしますが質問させてください。

処理の前後で引数の値を変化させるメソッドを作っており、
変化後の引数の値を取得したいと考えているのですが、
戻り値取得以外の方法で取得する方法はありますでしょうか。

具体的には以下のような実装を考えています。

****************************************************

int num = 0;
boolean changeResult = false;

// change() は引数を 1 に変更するメソッド
changeResult = sample.change(num);

// 1 と表示させたい
System.out.println(num);

****************************************************

このようなコードを書いたところ、最後の命令で 0 と表示されてしまいました。
何かアドバイスいただけると嬉しいです。よろしくお願いします

19 :デフォルトの名無しさん:2011/06/26(日) 16:41:40.48
num は int で基本型なのでコピー渡しなので
numの値が変更されることはないしだいです。

numの値をreturnで引っ張るのはダメなのかな

20 :デフォルトの名無しさん:2011/06/26(日) 16:42:28.30
>>18
http://hibari.2ch.net/test/read.cgi/tech/1306857184/894n-

21 :デフォルトの名無しさん:2011/06/26(日) 16:48:03.78
>>18
>>20にもあるけど。
・numをローカル変数でなくフィールドにする
・changeResutlの型をbooelanでなくint型とboolean型のフィールドを持つChangeResult型にする
・numをint配列にする

どれでも好きなのを。
> 戻り値取得以外の方法で取得する方法はありますでしょうか。
と考えること自体間違ってる可能性もあるけどね。

22 :デフォルトの名無しさん:2011/06/26(日) 16:48:46.49
>>14
http://p2.2ch.net/

23 :デフォルトの名無しさん:2011/06/26(日) 17:05:30.43
>>19-20
ありがとうございます。
Google で「java メソッド 引数 変化」で検索したら
該当するページがいくつか見つかったので読んでいました。

JavaWorld Online - Javaの“常識”、“非常識” 第3回
ttp://web.archive.org/web/20061209164349/http://www.javaworld.jp/technology_and_programming/-/27074-2.html

>>19
実際には引数は num だけでなくあと 3 つほどあるので
戻り値では全ての変数を戻すことができないです。

また、配列で戻そうにもそれぞれの変数の型が違うので無理ですし、
コレクションで戻すにはインスタンス化しなければいけません。
コレクションだと受け取った後が面倒ですし。

>>20
今の私では、変更できないことがすばらしい事だとは実感できないです。。。
なんでこんな不親切な仕様にするんだ……という気持ちがあります。

みなさんは、型が異なる複数の変数を呼び出し元に戻すときにはどのようにするのでしょうか。
そもそも、そのようなコーディングはしないのでしょうか

24 :デフォルトの名無しさん:2011/06/26(日) 17:10:29.38
>>21
おおー! ChangeResult型いいですね! やってみます!
だから前スレ >>904 の人はセッターゲッターロボとか言ってたのか……

25 :デフォルトの名無しさん:2011/06/26(日) 17:26:55.91
以下のような処理を行おうと思っております。

********aaa.txt*******
abc
 def
123
 456

このaaa.txtから全角スペースを排除し、排除した場合のみ前の行に統合、新たにbbb.txtに出力

*******bbb.txt******
abcdef
123456

実際に扱うテキストは1000行程度です。
BufferReaderクラスやPushBackReaderクラスなどいろいろ試してみたもののうまく処理できません・・・。
よろしくお願いしますm(__)m

26 :デフォルトの名無しさん:2011/06/26(日) 17:39:52.57
>>25
「行頭に」全角スペースがあったらその行を前の行と統合するの?
123 の行は行頭に全角スペースがないから統合しないんだよね?

27 :デフォルトの名無しさん:2011/06/26(日) 18:01:46.40
>>26
そうです。
行頭に全角スペースがあったときのみ前の行と統合という処理です。
その他の場合にはなんの処理も行いません。
説明不足ですみません><

28 :24:2011/06/26(日) 18:18:36.09
ChangeResult クラスを作って出来ました。
でもこれあまりやらない方がいいですね……。
setter や getter をたくさん使わなくちゃいけなくて、かなり見づらいコードになってしまった

29 :デフォルトの名無しさん:2011/06/26(日) 18:54:39.31
Javaに未来はありますか?

30 :デフォルトの名無しさん:2011/06/26(日) 19:47:38.51
>>25
Pattern クラスや Matcher クラス使えばできるんじゃね?

31 :デフォルトの名無しさん:2011/06/26(日) 21:17:56.68
>>30
正規表現で処理した場合、Patterm.matcher()にテキストデータの内容を全て渡すことになるのでしょうか?
readLine()を用いて取得すると一行ずつの処理になってしまうためにうまく処理できないので困っております・・・。

32 :25:2011/06/26(日) 21:57:12.07
とりあえずコードを改めて書いてみたましたが思惑通りに動いてくれません・・・。
PushbackReader pReader = null;
try{
FileInputStream fin = new FileInputStream("C://testJava//tmp.txt");
InputStreamReader iReader = new InputStreamReader(fin, "JISAutoDetect");
pReader = new PushbackReader(iReader);
StringBuffer readBuffer = new StringBuffer();
int readSt, nextReadSt;
for(int i=0; i < 40; i++){
readSt = pReader.read();
nextReadSt = pReader.read();
System.out.print("------------------------------\n" + (char)readSt + ":" + (char)nextReadSt);
System.out.println(Character.getNumericValue(nextReadSt));
if(readSt == '\n'){
if(nextReadSt == '\u3000'){
System.out.println("1");
readBuffer.append((char)pReader.read());
}else{
System.out.println("2");
readBuffer.append((char)readSt);
pReader.unread(nextReadSt);
}
}else{
System.out.println("3");
readBuffer.append((char)readSt);
pReader.unread(nextReadSt);
}
}
System.out.println(readBuffer.toString());

33 :25:2011/06/26(日) 22:03:39.55
あまりに見にくかったので多少修正しました。
なんで改行されないのでしょう・・・。
try{
 FileInputStream fin = new FileInputStream("C://testJava//tmp.txt");
 InputStreamReader iReader = new InputStreamReader(fin, "JISAutoDetect");
 pReader = new PushbackReader(iReader);
 StringBuffer readBuffer = new StringBuffer();
 int readSt, nextReadSt;
   for(int i=0; i < 40; i++){
    readSt = pReader.read();
    nextReadSt = pReader.read();
    System.out.println(Character.getNumericValue(nextReadSt));
    if(readSt == '\n'){
     if(nextReadSt == '\u3000'){         //改行+スペースだったら
       readBuffer.append((char)pReader.read());  //スペースの次の文字の読み込み
      }else{ //改行のみ
       readBuffer.append((char)readSt);
       pReader.unread(nextReadSt);
      }
    }else{                       //その他
      readBuffer.append((char)readSt);
      pReader.unread(nextReadSt);
    }
   }
}

実行結果
abc
def
123
456


34 :デフォルトの名無しさん:2011/06/26(日) 22:06:51.14
普通にreadLine()でやれば簡単だろ

35 :デフォルトの名無しさん:2011/06/26(日) 23:08:21.07
>>25
Rubyとか使えば5行で書ける処理をわざわざJavaでやるかねー…。
ま、チラ裏だけど。

36 :デフォルトの名無しさん:2011/06/26(日) 23:44:38.43
>>34
readLine()でやったけどできなくてread()使い始めたのに・・・(´;ω;`)ブワッ

>>35
チラ裏過ぎて泣きたい

37 :デフォルトの名無しさん:2011/06/26(日) 23:58:54.38
>>33
Windowsだと普通は改行は\r\nだから\nだけ削っても\r残ってるんじゃね?
出力したファイルをバイナリエディタとか \r\n と \r の見分けがつくエディタで見てみたら?

正規表現使うなら、
String text = "abc\r\n" + " def\r\n" + "123\r\n" + " 456\r\n";
System.out.println(text.replaceAll("(\\r\\n|\\r|\\n)\u3000", ""));
ファイル全部読み込んでStringに変換する処理と
Stringの内容全部ファイルに書き込む処理は割愛。

38 :デフォルトの名無しさん:2011/06/27(月) 00:16:38.07
>>37
うわああぁぁぁぁぁああ、まさにそれでした!
\rで場合分けしたらあっさり・・・w
キャリッジリターンですか・・・、いい勉強になりました。

正規表現使った処理のほうがやっぱりスマートですね。まだちゃんと使えてないのでこの後
一度書き換えていじくってみます!

解決感謝m(__)mありがとうございました。

39 :デフォルトの名無しさん:2011/06/27(月) 00:32:49.56
>>33
バッファを使って一行ずつ処理する。

BufferedReader br = new BufferedReader(new FileReader(new File("aaa.txt")));

String s2;
String buf = null;
while ((String s = br.readLine()) != null) {
 if (s.charAt(0) == " ") {
  s2 = buf + s.substring(1) ;
  //s2をファイル出力
 }
 buf = s;
}

40 :デフォルトの名無しさん:2011/06/27(月) 00:40:25.48
>>35
ルビーって未来あるんですか?

41 :デフォルトの名無しさん:2011/06/27(月) 00:55:14.10
>>40
未来は君たちが作るんだよ


42 :デフォルトの名無しさん:2011/06/27(月) 11:55:23.92
>>4
このぐらい頑張れよ慶應生www

43 :デフォルトの名無しさん:2011/06/27(月) 20:59:19.72
昨日の>>25ですが、さっそく正規表現の勉強を兼ねていろいろ処理してみようと試行錯誤
していたのですが、新たにうまく処理できない壁に当たってしまいました。
現在次のような構造のテキストを処理していまして、それをうまく行うことができません・・・。

半角数字任意配列(要素数は7)(部分Aとします)+
文字列(半角全角英数漢字ひらがなカタカナ記号からなる)(部分Bとします)+
終了を示す任意文字列(フラグのようなもの)(部分Cとします)で構成されています。以下が例です。
**************************************
123,432,2,234,321,12,2 abc123あいう <終了>
2,234,13,54,222,1,566 ^q^あ うあうあー <終了>
**************************************

ですが実際の処理では部分Bの中に複数個の改行(/r/n)が入っております。
**************************************
123,432,2,234,321,12,2 ab
c123
あい
う <終了>
2,234,13,54,222,1,566 ^q^あ
うあう
あー
<終了>
**************************************
ただし、部分AとCの中に改行が入ることは絶対にありません。

この下の状態から上の状態への処理を行おうとregexを記述しているのですが
String regex = "\\d*,\\d*,\\d*,\\d*,\\d*,\\d*,\\d*" + "(.*\\r\\n)*" + "\\<終了\\>"
Pattern pattern = Pattern.compile(regex);
としてもうまく処理できません・・・。どのように記述すればうまく処理できるでしょうか?
お助けお願いしますm(__)m

44 :デフォルトの名無しさん:2011/06/27(月) 21:26:29.03
>>4
http://msyk.net/keio/JavaBook/
このあたりでも読んだら?

45 :デフォルトの名無しさん:2011/06/27(月) 21:32:39.45
メソッドにインスタンスを渡すってどんなんだっけ、
てっきりコンストラクタの引数で処理を切り替えるのかと

46 :デフォルトの名無しさん:2011/06/27(月) 21:42:33.23
OpenJDK(IcedTea)についての質問ってここで良いのでしょうか?

LinuxでOpenJDKに自分好みのフォントを使わせたいと思っています。
/usr/lib/jvm/java-6-openjdk/jre/lib/fontconfig.properties.src
に、インストール元のファイルがあり、これを弄ればいいらしいのですが、
これに変更を加えず、別の設定ファイルで上書きできないかを知りたいのです。
ディストリビューション毎に設定ファイルの置き場所が異なるかもしれませんが、
どのディストリか教えていただければ自分でも応用できると思うので、誰かご存知の方いらっしゃったら教えて下さい。

SunのJDKでフォントの設定など国際化についての資料は、すぐ
ttp://java.sun.com/javase/technologies/core/basic/intl/faq_ja.jsp
など見つかるのですが、OpenJDKについては、どのファイルでどのように設定すればいいのかというものが分かりません。

47 :デフォルトの名無しさん:2011/06/27(月) 22:31:52.39
>>42
なぜ慶應?

48 :デフォルトの名無しさん:2011/06/28(火) 01:04:38.36
>>46
フォントマッピングの設定ファイルがfontconfig.properties.srcなんだから他の設定ファイルで変更できるわけ無いでしょ。
IcedTeaだろうがoracleのjavaだろうが方法は変わらんよ。

49 :デフォルトの名無しさん:2011/06/28(火) 01:40:26.04
>>42
どっかで見覚えあるなと思ったら
俺が去年取ってた講義と課題内容一緒wwわろた
某スーファミキャンパスのオブジェクト指向プログラミングって授業

50 :デフォルトの名無しさん:2011/06/28(火) 02:12:47.14
>>49
でお前はできなかったわけか。

51 :デフォルトの名無しさん:2011/06/28(火) 02:29:43.31
sfcでも馬鹿は居るのねえ。諭吉が泣いてるよw

52 :デフォルトの名無しさん:2011/06/28(火) 02:55:42.10
そもそもsfcはそういうのばっかです

53 :デフォルトの名無しさん:2011/06/28(火) 06:08:13.43
SFC は慶應じゃないから。SFC 大学。
SFC は優秀かダメかの二択なイメージがある

54 :デフォルトの名無しさん:2011/06/28(火) 07:33:08.59
マルチスレッド環境において、synchronized で同期する必要があるのは、
どのようなメソッドですか?
自分が調べた限りでは、複数のスレッドで同じ変数を書き換える場合、
すなわちクラス変数が関わってくる場合という認識ですが、あっていますか?

55 :デフォルトの名無しさん:2011/06/28(火) 08:10:41.12
クラス変数だけじゃなくて、同じインスタンスを複数のスレッドで使う場合も

56 :デフォルトの名無しさん:2011/06/28(火) 08:17:22.42
SFCとIT専門卒は実質何が違うんですか?

57 :デフォルトの名無しさん:2011/06/28(火) 08:50:46.40
synchronizedって重いの?

58 :デフォルトの名無しさん:2011/06/28(火) 10:55:01.31
>>49
オブジェクト指向プログラミングの講座が3ヶ月経ってまだこんなとこやってんのかよ。
MITの学部生ならロボット制御への応用課題に取り組んでる時期だぞ。
課題使い回しかよいっそ先輩に聞きに行けよどのへんがオブジェクト指向なのよまさかオーバーロードの練習?

59 :デフォルトの名無しさん:2011/06/28(火) 11:42:20.23
>>58
おまえ、バカ?(笑)

60 :デフォルトの名無しさん:2011/06/28(火) 11:56:32.86
>>59
バカは>4だろ。

61 : 忍法帖【Lv=19,xxxPT】 :2011/06/28(火) 12:46:04.92
バカって言うとバカって言う

62 :デフォルトの名無しさん:2011/06/28(火) 13:13:47.72
日本から見るとMITの学部生がロボット制御の課題に取り組むのは凄いことなんですか?

63 :デフォルトの名無しさん:2011/06/28(火) 13:37:21.73
占いもロボット制御と同じぐらい凄いと思うから安心しろ。

実学志向のMITがロボット実習に力を入れてるのは昔から有名だからなー。
日本のロボットコンテストのほとんどはMIT講座のパクリ。

導入教育のSICPの評判が悪すぎてPythonに切り替えたって噂は本当?

64 :デフォルトの名無しさん:2011/06/28(火) 13:43:59.28
馬鹿乙

65 :デフォルトの名無しさん:2011/06/28(火) 14:18:25.97
>>63
占いって…!
>4のはあらかじめ与えられたアルゴリズム使って乱数発生させて、数えるだけ、
小学生が最初に作るサイコロゲームみたいなもんだろ。

66 :デフォルトの名無しさん:2011/06/28(火) 14:24:39.13
自慢出来るのが唯一学歴だけなんだろ
相手にするな

67 :デフォルトの名無しさん:2011/06/28(火) 16:57:35.54
JavaでMidiファイル再生時にMidiのみの音量を調整したいのですが
何か方法はないでしょうか?できれば再生中のものの音量を変更できればうれしいです。


68 :デフォルトの名無しさん:2011/06/28(火) 19:22:33.49
socketchannel connect
ブロッキングモードでタイムアウト設定する方法はないのでしょうか?

69 :デフォルトの名無しさん:2011/06/28(火) 20:05:07.71
メソッドをオーバーライドしたり、抽象メソッドを実装する際、
アクセス制限を緩くすることは出来ても厳しくすることは出来ませんよね?
例)
元メソッド: abstract void method();
実装NG: private void method();
実装OK: public void method();

これは何故でしょうか?
緩く出来てしまうと、アクセスして欲しくない外部からもアクセス出来てしまうような実装になった際、マズイと思うのですが。

70 :デフォルトの名無しさん:2011/06/28(火) 20:13:59.39
>>69
オブジェクト指向言語のアクセサはセキュリティのために用意された物ではありません。
それを説明したC++の本があったと思うけど、書名が思い出せないorz

71 :デフォルトの名無しさん:2011/06/28(火) 20:59:20.11
>>55
ありがとうございます。
つまり、複数のスレッドで変更する変数(インスタンス含む)がある場合ですね。
留意して実装します。

72 :デフォルトの名無しさん:2011/06/28(火) 22:33:26.34
>>69
親が出来ることは子も出来なくてはならないから。

73 :デフォルトの名無しさん:2011/06/28(火) 23:05:47.90
>>69 >>72
レスありがとうございます。

>>69
C++ですか。そっち方面の情報も調べてみます。

>>72
ポリモーフィズム等を考慮して、という事ですよね。
その場合ですとアクセス制限を厳しく出来ないようにするという事の理由は通るんですが、
アクセス制限を緩くしても良い理由がいまいち分かりません。。

74 :デフォルトの名無しさん:2011/06/28(火) 23:16:48.47
緩くしちゃいけない理由がないから
C#だとバージョン管理上の理由で逆に厳しくできて緩くはできなかったりするけどね
厳しくしてもスーパークラスの型にキャストすれば呼べるからポリモーフィズムが使えなくなったりはしない

75 :74:2011/06/28(火) 23:32:28.19
スレチだけどC#で厳しくできるのはインターフェイスメンバを実装する場合だけだったので訂正
緩くするのは、たとえばオーバーライドするんじゃなくて public void method1() { method(); } のようにしても、
外部からアクセスできるようになってしまうのは同じなわけで、そこはサブクラスを作った人の責任。
C#で緩く出来ないのもスーパークラスに仮想メソッドが追加されたときの誤動作を防ぐとかそこらへんのポリシーがJavaより厳しいからで
アクセス制限の話とはあまり関係ない。

76 :デフォルトの名無しさん:2011/06/29(水) 00:22:50.54
クラスの継承を行って子クラスのインスタンス化を行うときの話なんですが、
親クラス型の変数にそのインスタンスを代入する場合と子クラス型の変数にそのインスタンスを代入する場合、何か違いがあるのでしょうか?


77 :デフォルトの名無しさん:2011/06/29(水) 01:30:10.94
>>76
言ってることがよく分からないけど、
1人の親に子供が2人いる場合を考えてみるとどうだろう。

78 :デフォルトの名無しさん:2011/06/29(水) 01:44:04.17
>>73
「リスコフの置換原則」でググると理解が深まるかも。

> アクセス制限を緩くしても良い理由がいまいち分かりません。
親ができないことを子供ができることについては問題ない…というか
それこそがextendsという言葉が表している機能の"拡張"そのものでは。
確かに頻繁にやるようなことではないと思うけど。

79 :デフォルトの名無しさん:2011/06/29(水) 01:54:12.37
>>76
親子関係にあるクラスのメソッドとフィールドを親子共通のものと、子で追加したものに分けて、列挙して考えてみると良い
(図で表現してみるとなお良い)


80 :デフォルトの名無しさん:2011/06/29(水) 01:54:36.68
>>48
なんでそう思ったの?知らないならレスしなければいいのに。
>>46
ちょっと調べてみて、根本的な解決方法じゃないけど、
-Dsun.awt.fontconfig=/path/to/font.propertiesで自分の設定を読みこめる。
このプロパティをどんなときでも起動時に読みこむファイルに記述すれば、全環境でこの設定が有効になる。
ただ、そんなファイルがあるかはもっと調べないといけない。俺は力尽きた。

81 :デフォルトの名無しさん:2011/06/29(水) 02:03:39.40
>>76
Oya obj = new Ko();
Ko obj = new Ko();
この2つの違いについて、って事?

実体はどちらもKoオブジェクトだけど。
上についてはOyaクラスのオブジェクトとして振舞える(Koクラスのみに定義してあるメソッド・メンバは使えない)。
下についてはKoクラスのオブジェクトとして振舞える。

82 :69:2011/06/29(水) 02:15:04.39
>>74 >>78
レスありがとうございます。
"拡張"という考えなわけだから制限を緩くすることにそもそも問題無い、ということですね。



83 :デフォルトの名無しさん:2011/06/29(水) 03:05:01.83
>>54
ガードするのはメソッドではなくデータ

84 :デフォルトの名無しさん:2011/06/29(水) 05:17:27.15
>>80
ニート乙

85 :デフォルトの名無しさん:2011/06/29(水) 05:31:37.43
>>78
類似の質問かも知れんけど、

セッターやゲッターを使うことは
開放/閉鎖原則に反するような気がするんだが、
そうなん?


86 :デフォルトの名無しさん:2011/06/29(水) 07:53:28.31
派生先であえて機能を制限したい時は
UnsupportedOperationException 投げるのが王道だよな。

immutableなCollection実装とかがよくそういうことをする。



そういや宿題スレ復活してたぞー

★★ Java の宿題ここで答えます Part 71 ★★
http://hibari.2ch.net/test/read.cgi/tech/1309076891/

誘導よろしく

87 :デフォルトの名無しさん:2011/06/29(水) 08:11:16.39
>>84
無様だな

88 :デフォルトの名無しさん:2011/06/29(水) 09:14:27.35
なんでそう思ったの?知らないならレスしなければいいのに。

89 :デフォルトの名無しさん:2011/06/29(水) 10:27:47.78
勘違いしてる人も多いみたいなので(>>85がどうなのかはわからんが)書いとくけど
OCPの「閉鎖」と、オブジェクト指向の「隠蔽化」って全然意味違うから。

それを踏まえた上で>>85の疑問に答えると、
OCPの「閉鎖」は既存のクラス(今の文脈では親クラス)について言及してるのであって
新しく追加したクラス(子クラス)については何も言っていない、と思うんだけど(むしろ開放されてるという意味では原則通り?)
どうだろう。

90 :デフォルトの名無しさん:2011/06/29(水) 10:31:39.46
>>87
ニート乙

91 :デフォルトの名無しさん:2011/06/29(水) 11:34:19.49
>>89
セッター&ゲッターで、オブジェクトに直接書き加えることができるから
クローズドではないと思うけど。


92 :デフォルトの名無しさん:2011/06/29(水) 11:38:03.51
で、
ttp://d.hatena.ne.jp/asakichy/20090126/1232979830
>OCPはある意味逆の「1つの責任をいろんな所に分散させてはイケナイ」っていう意味も自然に含まれている。
セッター&ゲッターだと、責任の所在がどこにあるのか不明でしょ?

93 :デフォルトの名無しさん:2011/06/29(水) 15:14:48.24
C言語はVisulStudioみたいな開発環境があるんだが
Javaではなんてソフト使うといいんだ?

Boland入れてテキストエディタでソース書いてbccコンパイル
みたいな感じしかJavaには無いのか?

スレチだったらスマソ

94 :デフォルトの名無しさん:2011/06/29(水) 15:25:57.82
eclipse

95 :デフォルトの名無しさん:2011/06/29(水) 15:26:36.01
>>93
Netbeans・Eclipse

96 :デフォルトの名無しさん:2011/06/29(水) 15:35:37.29
なんかjavadoc見れないんだけどこれ俺だけ?

97 :デフォルトの名無しさん:2011/06/29(水) 15:36:24.51
>>94-95
こんな初歩的な質問に答えてくれてありがとう!

98 :デフォルトの名無しさん:2011/06/29(水) 18:04:04.58
http://java.sun.com/にアクセスできないのはおいらだけですか?

99 :デフォルトの名無しさん:2011/06/29(水) 18:08:18.52
sunはなくなりました。

100 :デフォルトの名無しさん:2011/06/29(水) 18:19:30.97
>>98
俺もです。


101 :デフォルトの名無しさん:2011/06/29(水) 18:32:34.54
>>99
エッ(゚Д゚≡゚Д゚)マジ?

102 :デフォルトの名無しさん:2011/06/29(水) 18:36:46.16
>>98
俺もです。

103 :デフォルトの名無しさん:2011/06/29(水) 18:36:52.64
sun.comは100万ドルで売りに出されてたはず

104 :デフォルトの名無しさん:2011/06/29(水) 19:21:33.40
>>103
またそんな嘘をさらっと…
日本だけみたいよ、つながらないの。

105 :デフォルトの名無しさん:2011/06/29(水) 19:25:17.74
>>91-92
すまぬ、ちょっと論点を勘違いしていたようだ。


106 :デフォルトの名無しさん:2011/06/29(水) 20:05:10.17
>>80
それはフォント構成ファイルを指定する方法であってそのフォント構成ファイルがfontconfig.properties.srcだ。
フォント構成ファイルにはフォーマットが2種類。ファイルが3つあってVMが最低限持ってるfontconfig.bfcと
環境が読み込むfontconfig.properties.srcがデフォルトでロードされる。
もう一つユーザー定義用にfontconfig.propertiesがあるが>>46の聞き方ではこれらのフォント構成ファイル以外に設定ファイルがあるかと聞いていることになる。
つまりそんな設定ファイルはない。あと、上書きできるかについてもフォント構成ファイルをどう使うかはVMの実装依存なんで上書きできる保証はない。
6.0以上ならAPIからフォントマッピングをいじれるが先に言ったとおり実装依存。
javaは環境依存になるから原則的にフォントマッピングはいじらせない。
フォント構成ファイルがあるのは環境依存の問題を自ら解決させるためで好きなフォントを割り当てるためじゃない。
好きなフォントを使いたいなら1.5以上でプログラムコードから物理フォント割り当てるしかない。
フォントマッピングと物理フォントの割り当ては別の問題でAPIが違うし方針も違う。
もうひとつ、デフォルトフォントそのものを書き換える方法があるがそもそもデフォルトフォントは一部の国しか用意されてない。
日本語のデフォルトフォントはない。javaのフォント周りは環境依存の対策と歴史由来の理由で色々な解法があるが結局は実装依存だ。
わかったら無知は黙ってろ。

107 :デフォルトの名無しさん:2011/06/29(水) 20:19:03.66
>>96
会社で今日超困ったよー。ひどいよね

108 : 【東電 85.2 %】 忍法帖【Lv=20,xxxPT】 :2011/06/29(水) 21:08:27.61
業務でなんでDL版をっ確保しないのかっ!

109 :デフォルトの名無しさん:2011/06/29(水) 21:39:43.62
ドイツやオーストラリアでも困ってるらしいぞ、java.sun.com
ソースはtwitter

オンラインドキュメントなんかどうでもいいんだが、
XML文書のDTDとかスキーマとか大事な情報一杯抱えてなかったっけjava.sun.com...

110 :デフォルトの名無しさん:2011/06/29(水) 21:58:54.81
>>106
>フォント構成ファイルにはフォーマットが2種類。ファイルが3つあってVMが最低限持ってるfontconfig.bfcと
>環境が読み込むfontconfig.properties.srcがデフォルトでロードされる。
マジでソースも読めないのな。fontconfig.properties.srcは誰も読みこまない。fontconfig.bfcをリネームしてみろ。

>もう一つユーザー定義用にfontconfig.propertiesがあるが
どこに?~/fontconfig.propertiesとか?それともsun.awt.fontconfigで指定するファイルのこと?

>あと、上書きできるかについてもフォント構成ファイルをどう使うかはVMの実装依存なんで上書きできる保証はない。
いつの間にかOpenJDKとIcedTeaの話を脱線させているあたり、コミュ障の匂いがするな。
VMの実装依存とか言ってるくせに>>48みたいな言い切りもするし。どこに依存するのか一度でも確かめてみたことあるの?
fontconfig.propertiesを読み込むランタイムでは、VMで読んでいるのか標準ライブラリで読んでいるのか本当にご存知?

能無しというよりコミュ障だな。自分で勝手に論点を広げたり狭めたり。それともそれが処世術?

111 :デフォルトの名無しさん:2011/06/30(木) 04:31:22.58
>>109
java.sun.com は今は使えるようです。
夕方から使えなかったので困ったのですが
>sun.comドメインが6月1日に廃止[ITmedia]
>ttp://www.itmedia.co.jp/news/articles/1103/18/news067.html
を見つけて焦りました。
続報がこの過去スレにあるらしいのですが
見られる方は教えてくださいませんか?

112 :デフォルトの名無しさん:2011/06/30(木) 08:19:24.83
BufferedReaderの入力を使って打ち込んだファイル名と同じファイル(テキストデータ)を読み込んでそれを表示するっていうプログラムなんですけど、もしファイルが見つからないときの例外処理はどうやったらできますかね?

113 :デフォルトの名無しさん:2011/06/30(木) 08:27:37.00
>>111
その記事に書かれてる参照先の公式ブログに行ってみそ
「間違っちった。恥ずかしいから妻には言わないで///」
みたいなことが書いてあるお


114 :デフォルトの名無しさん:2011/06/30(木) 08:27:51.21
>>111
リンク先で「嘘。java.sun.comは今後もHTTPリダイレクトで運用していきます」、
とOracleが嫁の反対を押し切って謝罪しているな


java.sun.com関連のトラブルの質問を先取りしてエスパー回答しておくが、
XML関連の外部リソースをローカルファイルやJAR内のリソースに自前で
リダイレクトするのは org.w3c.dom.ls.LSResourceResolver や
org.xml.sax.EntityResolver の役目だ。

115 :デフォルトの名無しさん:2011/06/30(木) 09:37:58.30
わかりました。

116 :デフォルトの名無しさん:2011/06/30(木) 09:38:26.58
>>98あたりからのレスでOracleサイトがおかしいのは分かりましたが、
”現状”で、Javaの日本語ドキュメント一式をDLする方法って分かりませんか?

117 :デフォルトの名無しさん:2011/06/30(木) 11:18:30.31
ByteBufferに書き込まれたバッファをクリアするにはByteBuffer allocateで初期化するしかないのでしょうか?

118 :デフォルトの名無しさん:2011/06/30(木) 11:32:16.35
>>117
・「書き込んだからさあ読め」な場合はflip()
・「読んだからさあ続きを書け」な場合はcompact()
・「全部消したんで最初からまた書け」な場合はclear()

119 :デフォルトの名無しさん:2011/06/30(木) 11:38:30.63
バッファの内容をクリアしたいなら、
Arrays.fill(byteBuffer.array(), byteBuffer.arrayOffset(), byteBuffer.arrayOffset() + byteBuffer.capacity(), 0);
とか、put で上書きするか。

120 :117:2011/06/30(木) 11:44:53.47
>>119
ありがとうございます
試してみます

121 :デフォルトの名無しさん:2011/06/30(木) 11:54:46.61
>>116
Subversion使いに

https://svn.java.net/svn/jdk-api-ja~svn

のエクスポートでも頼みたいとこだが、
こっちも息していないっぽい

122 :デフォルトの名無しさん:2011/06/30(木) 11:57:42.10
>>116
Standard Edition 6 なら
ttp://www.cleverware.net/java/jdk-6-doc-ja/ja/api/index.html
で見れる


123 :デフォルトの名無しさん:2011/06/30(木) 12:59:03.55
>>121,122
たすかります。有難うございました

124 :デフォルトの名無しさん:2011/06/30(木) 16:45:56.74
とりあえず今のところGoogleのキャッシュで事足りてるが


125 :デフォルトの名無しさん:2011/06/30(木) 17:22:19.91
String s1 = "abc";
String s2 = "abc";

s1 == s2 はなぜ真になるのでしょうか?
equalsとかで真になるのは分かるのですが。

126 :デフォルトの名無しさん:2011/06/30(木) 17:27:54.28
new String("abc") == new String("abc") は偽になる
new String("abc").intern() == new String("abc").intern() は真になる

定数式の値がString型の場合(文字列リテラルとか)は言語仕様に則って、intern()されなければならない。

127 :デフォルトの名無しさん:2011/06/30(木) 17:43:40.02
Tomcat 7.0 + ServletでIEでのファイルのダウンロードの処理なのですが

while ((contents = inBuffer.read()) != -1) {
  outBuffer.write(contents);
}
の.write()の行で下記のエラーが発生します。

ClientAbortException: java.io.IOException
at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:369)
at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:327)

何か予想できる原因がありましたら教えてください。

128 :デフォルトの名無しさん:2011/06/30(木) 18:54:42.55
JBuilderってまだあんの?

129 :デフォルトの名無しさん:2011/06/30(木) 18:56:42.93
なんで、Javaってダブルクリックイベントがないの?

130 :デフォルトの名無しさん:2011/06/30(木) 21:14:53.00
トリプルクリックイベントとか、クアドラプルクリックイベントとか、クインティプルイベントとか
とりあえず、10個くらい用意しておけばOK?


131 :デフォルトの名無しさん:2011/06/30(木) 21:27:55.65
>>130
OK!!ついでに、JBuilderも用意しといてあげて!

132 :デフォルトの名無しさん:2011/06/30(木) 22:04:41.47
よしちょっと作ってくる

133 :デフォルトの名無しさん:2011/06/30(木) 22:43:42.36
>>127
ダウンロードダイアログのキャンセルボタンでも押しちゃったんじゃね

134 :デフォルトの名無しさん:2011/06/30(木) 23:17:38.09
同じぐらいの位置のクリックを好きなだけ好きな間隔でカウントしとけ

135 :デフォルトの名無しさん:2011/07/01(金) 00:45:22.10
void inputCellByYou(int[][] board) {
while (true) {
int x = getInput("行", board);
int y = getInput("列", board);
if (canPut(board, x - 1, y - 1)) {
board[x -1][y - 1] = 0;
break;
}
JOptionPane.showMessageDialog(null,
"(" + x + " " + y + ")には置けません");
}
}

これを実行すると入力した行と列が反転されて入力されてしまうのはなぜでしょうか?
getInputは入力された値を返すだけのメソッドです。


136 :デフォルトの名無しさん:2011/07/01(金) 01:34:30.49
わかりません
何を見て「反転されて入力されている」と思ったのか教えてください

137 :135:2011/07/01(金) 02:00:29.84
分かりにくくて申し訳ない
○×ゲームを作っているのですが、どうも入力した行と列が反転して表示されてしまいます

2次元配列の行と列のつけ方は数学の行列と反対なのですか?

138 :デフォルトの名無しさん:2011/07/01(金) 03:39:16.70
>>137
君が行と列を逆に考えているんでしょう。

行が増えればどちら方向に増える↓ or →
列が増えればどちら方向に増える↓ or →


139 :デフォルトの名無しさん:2011/07/01(金) 03:52:01.63
>>137
何かベクトル計算とかするっていう問題じゃないから、数学の行列との違いを考える必要はないんじゃないか。
自分のプログラム全体で、どっちが行でどっちが列なのかが統一されていないのが原因だと思う。
boardの表示用の関数と、入力用の関数とでおそらく行と列が違うのでは。

個人的には盤面を直接二次元配列で表現すると、こういった頭に入れなきゃいけない決まりごとが増えて混乱するから、
Boardクラスを作ってput(row,col,value)とget(row,col)メソッドを用意してデータの隠蔽をしちゃいたくなる。

140 :デフォルトの名無しさん:2011/07/01(金) 11:44:23.09
「配列の配列」以上の何者でもないんだからどう使おうが勝手
そりゃboard[x][y]で入れたら出すときもboard[x][y]で出さないと逆になるわな
普通はアクセスの効率を考えて連続アクセスする方を後ろのインデックスに持ってくるんだが
この場合はどっちでもいい

141 :デフォルトの名無しさん:2011/07/01(金) 11:45:31.97
>>138
>>139
ご回答ありがとうございます
配列を文字列に変換する部分で列と行が逆になってました

142 :デフォルトの名無しさん:2011/07/01(金) 13:08:29.77
>>133
ありがとうございます。
ブラウザのキャンセルボタンを押したときはSocketExceptionが
発生してくれるので微妙に違うようです。
ClientAbortException: java.net.SocketException: Connection reset by peer: socket write error

143 :デフォルトの名無しさん:2011/07/01(金) 19:27:03.95
javaのヘルプの見方を教えてください
例えばファイルに書き込み・読み込みをする場合、どのページからどのようにたどっていけばいいのでしょうか?

144 :デフォルトの名無しさん:2011/07/01(金) 19:43:37.67
>>116はもう解決したと思うけど

http://java.sun.com/javase/ja/6/download.html
ドメイン関係が解決したのか現状だとここから落とせる

145 :デフォルトの名無しさん:2011/07/01(金) 20:14:31.94
クマー

146 :デフォルトの名無しさん:2011/07/01(金) 22:31:12.44
unnti

147 :デフォルトの名無しさん:2011/07/01(金) 23:41:46.04
何故javaにはvarがないんですか?

148 :デフォルトの名無しさん:2011/07/01(金) 23:49:39.25
そういう話はあるけど、コミュニティ主導になってからというもの、言語を拡張したくても全く議論がまとまらなくなってしまった
次期バージョンではdiamond operatorとかいうカスみたいなのが入るとか入らないとか

149 :デフォルトの名無しさん:2011/07/02(土) 00:20:31.29
javaアプレットでCGやフォンシェーディングについて言及された初心者向けの本はありませんか?
importが多くあることや最初のextendsという所も分からない状態です。

今の自分のレベルとしてはjavaの入門書を終えたレベルだと思います。

150 :デフォルトの名無しさん:2011/07/02(土) 01:43:30.95
importもextendsも説明しない入門書・・・

151 :デフォルトの名無しさん:2011/07/02(土) 02:22:05.62
>>149
入門できてねえぞ

152 :デフォルトの名無しさん:2011/07/02(土) 06:49:01.04
web.xml について質問です。
@のように <servlet-mapping> のタグがある意味がわかりません。
なぜAのような構造になっていないのでしょうか。@は冗長に感じられます

@一般的な web.xml(一部)
<servlet>
  <servlet-name>HelloServlet</servlet-name>
  <servlet-class>minicar.HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>HelloServlet</servlet-name>
  <url-pattern>/hello</url-pattern>
</servlet-mapping>

A無駄を省いた(?)web.xml(一部)
<servlet>
  <url-pattern>/hello</url-pattern>
  <servlet-name>HelloServlet</servlet-name>
  <servlet-class>minicar.HelloServlet</servlet-class>
</servlet>

以上、よろしくお願いします

153 :デフォルトの名無しさん:2011/07/02(土) 07:30:56.10
お断りします

154 :デフォルトの名無しさん:2011/07/02(土) 10:22:29.10
>>149
importもextendsも入門書に書いてますので、入門書読み終えたレベルですらありませんね


155 :デフォルトの名無しさん:2011/07/02(土) 11:04:23.69
>>149
とりあえず「Java3D」の名の付いた本買ってきていろいろやってみればいい。
古い本も多いので気をつけて。アプレットよりはSwingアプリを目指そう。

金かけたくない人はこの辺のWebを
ttp://codezine.jp/article/detail/74

なんでこーみんな、まわりくどい回答をするかね…

156 :デフォルトの名無しさん:2011/07/02(土) 11:32:27.99
>>155
時代おくれのオッサン乙

157 :デフォルトの名無しさん:2011/07/02(土) 12:48:05.43
無礼な!ワシはまだ80ぢゃ!

158 :デフォルトの名無しさん:2011/07/02(土) 13:32:57.22
だめじゃん。
俺は永遠の25歳だwww

159 :デフォルトの名無しさん:2011/07/02(土) 13:44:11.08
ゆとりってさ、就職難とかなんだとか言われてどこにも就職できなくてそのうちニートになっちゃうんでしょ?

160 :デフォルトの名無しさん:2011/07/02(土) 14:13:11.14
俺は就職できるかどうかは外見と話術と時の運で決まるものだと思ってるので
ゆとりと就職難はあまり関係ない気がするんだ

161 :デフォルトの名無しさん:2011/07/02(土) 14:29:47.00
ゆとりろは関係あるだろ

162 :デフォルトの名無しさん:2011/07/02(土) 14:33:26.54
>>160
お前には聞いてない

163 :デフォルトの名無しさん:2011/07/02(土) 14:37:55.90
特定の誰かに名指しで聞いてるようにも見えないが
答えが欲しい相手に何か条件があるのならそれは明記した方がよい

164 :デフォルトの名無しさん:2011/07/02(土) 14:39:38.45
>>163
「お前には聞いてない」
大事なことなのでもう一度書き込みさせて貰いました

165 :デフォルトの名無しさん:2011/07/02(土) 14:54:22.49
じゃあ俺に聞いてくれ

166 :デフォルトの名無しさん:2011/07/02(土) 17:43:50.90
反抗期とか懐かしいわ

167 :デフォルトの名無しさん:2011/07/02(土) 18:01:53.63
>>165
逝ってよし

168 :デフォルトの名無しさん:2011/07/02(土) 18:02:12.93
ヘルプの見方を覚えたいのですがjava.lang.Mathの「int 値の絶対値を返します。」を使う場合
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Math.html#abs(int)を見てるのですが
これはどのように使うのでしょうか?

169 :デフォルトの名無しさん:2011/07/02(土) 19:41:45.11
>>168
あるクラスからメソッドを呼び出すときと同じ使い方
Mathクラスのabs(int a)メソッドを呼び出すって考えるといい

170 :デフォルトの名無しさん:2011/07/02(土) 20:03:08.96
>>167
俺もタイムマシン乗りたい

171 :デフォルトの名無しさん:2011/07/02(土) 20:08:16.02
>>169
ありがとうございます

172 : 【東電 78.2 %】 :2011/07/02(土) 20:32:41.28
>>152
1つのサーブレットで複数のURLパターンを割り当てたい場合にも対応できるから。


173 :デフォルトの名無しさん:2011/07/02(土) 21:07:33.55
>>172
ありがとうございます。そんな場合もあるんですか……。
もしできれば、例などをいただけると嬉しいのですが……

174 :デフォルトの名無しさん:2011/07/02(土) 21:09:33.37
どっちみち*.doで指定するし

175 :172:2011/07/02(土) 21:17:29.74
すまん、質問の回答になってなかった。
servletはアプリの定義に関する要素。
言ってみればWebコンテナの内側の世界。
URLはWebコンテナの外側の世界。
内と外をどうマッピングすればいいかWebコンテナに教えるのが
servlet-mapping。
仕様を考えた人は、コンテナの内と外のパラメタを一つの要素の
中に混在たくなかったのだろうと解釈してる。


176 : 【東電 79.8 %】 :2011/07/02(土) 21:23:18.35
>>173
同じサーブレットを動かす場合でも、URLによって適用するフィルタを変えたいとか
認証する/しないを変えたいとか。

オレはWebアプリ屋ではないので、実際どう使ってるかは知らない。

177 :デフォルトの名無しさん:2011/07/02(土) 21:34:25.11
>>175-176
ありがとうございます。丁寧にご説明いただいたおかげで納得できました

178 :デフォルトの名無しさん:2011/07/02(土) 22:54:44.67
voidを意味するClassオブジェクトを取得する簡単な方法は無いでしょうか?
またClassオブジェクトがvoidを意味しているかをチェックするには
clazz.getName().equals("void")以外に何か無いでしょうか.
よろしくお願いします

179 :デフォルトの名無しさん:2011/07/02(土) 22:58:47.14
void.class
if (clazz == void.class)

180 :デフォルトの名無しさん:2011/07/02(土) 23:00:24.12
clazz == java.lang.Void.TYPE とか

181 :デフォルトの名無しさん:2011/07/02(土) 23:01:16.58
>>179
初めて知りました!!
ありがとうございますー!

182 :デフォルトの名無しさん:2011/07/02(土) 23:05:15.93
>>180
こんなところに定数が・・・ありがとうございました

183 : 【東電 72.9 %】 :2011/07/03(日) 00:08:55.55
>>173
余談だけど。
APサーバによっては、固有の定義ファイルでURLごとにスレッド数を割り当てることもできる。
(URLを一般会員用とプレミアム会員用に分けるとか)
そんな場合にもマッピングの複数指定は有用かと。

184 :デフォルトの名無しさん:2011/07/03(日) 01:27:13.26
Webアプリケーションのviewを作るときにヘッダ、メニュー、フッタ等
それぞれパーツごとに作るためには何を使えばおk?JSPじゃ無理だよね。

たまたまTilesとかいうのを見つけたけど、日本語情報無いからハードル高くて。

185 :デフォルトの名無しさん:2011/07/03(日) 02:48:39.03
jspインクルードでいんじゃね。

186 :デフォルトの名無しさん:2011/07/03(日) 06:22:33.94
>>183
ありがとうございます。覚えておきます

187 :デフォルトの名無しさん:2011/07/03(日) 11:35:13.94
Java印刷API

188 :デフォルトの名無しさん:2011/07/03(日) 14:17:13.91
Javaの例外(エラー)を簡単なテキストファイルに残しておきたいんですが、
自分で例外の出力を整形して、テキストファイルに残すのが一般的なのか
Log4jというのを使うのが一般的なのか・・・

自分、Javaの実務経験がないのでこまっております。どっちがいいんでしょうか?

189 :デフォルトの名無しさん:2011/07/03(日) 14:23:57.03
log4j はオワコン

slf4j + Logback
を使え

190 :188:2011/07/03(日) 14:30:02.78
>>189
どうもありがとうございます。
それを使ってみます。ありがとう。助かりました。

191 :デフォルトの名無しさん:2011/07/03(日) 14:51:48.11
正直オワコンとか95割とか使ってみたかっただけだろ
ってカキコが最近多すぎてうんざりするよね

192 :デフォルトの名無しさん:2011/07/03(日) 16:08:11.83
ググって調べれば分かるのに
挑発して詳細を聞き出そうとするカキコが
最近多すぎてうんざりするよね

193 :デフォルトの名無しさん:2011/07/03(日) 16:08:24.53
>>159

194 :天使 ◆uL5esZLBSE :2011/07/05(火) 07:32:06.54
汚水でも飲んでろ???????????????????????????????????????????????
死ねゴミ


195 :天使 ◆uL5esZLBSE :2011/07/05(火) 12:42:14.96
2011年になっても未だにJAVA使い続けてる奴ってさ
仕事で仕方なくならわかるけど

家でもJAVAやってるなら本当にバカだよね。哀れ

ゴミなんだから早く死んだほうがいいと思う

196 :デフォルトの名無しさん:2011/07/05(火) 13:07:24.33
>>195
kwsk

197 :デフォルトの名無しさん:2011/07/05(火) 13:33:49.11
>>195
kwsk

198 :デフォルトの名無しさん:2011/07/05(火) 15:51:28.87
>>195
kwsk

199 :デフォルトの名無しさん:2011/07/05(火) 15:57:47.58
>>195
wktk

200 :デフォルトの名無しさん:2011/07/05(火) 16:33:28.27
会社から休業命令が出ている俺の唯一の楽しみは、このJavaスレを2時間に一度くらい
ROMることなんですけど。

ここ2,3日、一方的に建設的なレスが進みません。

みなさん、もっとがんばってください。

201 :デフォルトの名無しさん:2011/07/05(火) 16:35:17.67
サーブレットはおもしろいけど、めんどうなこともたくさんあるんだな〜。

202 :デフォルトの名無しさん:2011/07/05(火) 16:41:02.48
どうして休業命令なんか出たんですか?

203 :デフォルトの名無しさん:2011/07/05(火) 16:48:51.61
仕事がないというか、私の行く先が全然ないからです。平たく言うと、
自宅待機です。

204 :デフォルトの名無しさん:2011/07/05(火) 16:51:56.93
>>159

205 : 【東電 84.6 %】 :2011/07/05(火) 16:58:12.47
>>201
kwsk

206 :デフォルトの名無しさん:2011/07/05(火) 17:06:05.66
>>205
え?web.xmlとか、Ajaxとかフレームワーク回りが自分はめんどくさいです。

まあ、慣れの問題なんでしょうけど。



207 :デフォルトの名無しさん:2011/07/05(火) 17:55:26.63
リフレクション機能はオブジェクト指向言語ではご法度的なことをよく本とかで言われますが、
実際のところ開発ではばんばんリフレクション使っていたりするんですか

208 :デフォルトの名無しさん:2011/07/05(火) 18:15:48.31
>>207
業務アプリでは使うことほとんどないんじゃない?
アプリが利用しているフレームワークやAPサーバではガシガシ使われてるだろうけど。

209 :デフォルトの名無しさん:2011/07/05(火) 18:16:37.64
>>206
web.xml手書きしてるの?

210 :デフォルトの名無しさん:2011/07/05(火) 20:01:54.46
あと、セキュリティとかさあっ! 文字列照合して、正規表現とマッチかけるとかさあっ!

めんどくさいことだらけだもんっ!

211 :デフォルトの名無しさん:2011/07/05(火) 20:12:21.31
>>209
コピパーはそろそろ卒業しとけ

212 :デフォルトの名無しさん:2011/07/05(火) 20:20:42.03
Failed to create ASP object For:RScheck.asp というエラーメッセージが出て特定のページが表示されないのですが、改善方法はありますでしょうか?

窓7でIEです。

213 : 【東電 78.9 %】 :2011/07/05(火) 20:23:27.44
それはサーブレット云々というより、Webアプリの宿命では?

214 :213:2011/07/05(火) 20:24:21.30
あ、>>210へのレスね。

215 :デフォルトの名無しさん:2011/07/05(火) 20:25:43.63
>>207
リフレクションのおかげでプロジェクトがポシャッたケースなら社内の別の課であった。
コーディング規約で実装におけるリフレクションの禁止令が発令された。

216 :デフォルトの名無しさん:2011/07/05(火) 20:29:19.42
>>211
何が言いたい?

217 :デフォルトの名無しさん:2011/07/05(火) 21:01:53.46
>>215
なにやらかしたー。privateメンバへ強引にアクセスしてカプセル化がパーになったとか?

218 :デフォルトの名無しさん:2011/07/05(火) 21:51:46.22
HashMapクラスのputメソッドでキーが異なる多数の要素を追加したとき、
衝突が発生した場合はどうなりますか?
単純に上書きされてしまいますか?
それとも、再計算して別の領域に格納されますか?
自分で試していますが、なかなか衝突しないので、答えを知りたいです。

219 :デフォルトの名無しさん:2011/07/05(火) 22:01:56.37
キーが異なったら衝突しないのでは?
ここで言う「衝突」ってなんだろ?

220 :デフォルトの名無しさん:2011/07/05(火) 22:07:20.25
ハートはもう気ままに・・・

221 :デフォルトの名無しさん:2011/07/05(火) 22:34:54.98
>>219
要するに、値が上書きされてしまうことです。
もし異なるキーで発生するとなると使い勝手が難しいです。

222 :デフォルトの名無しさん:2011/07/05(火) 22:41:41.46
>>221
キー(要素を区別するためのインスタンス)が異なるんだろ?

223 :221:2011/07/05(火) 22:42:46.62
例えば、"hoge"というキーで値を追加したところが、
別の"hoge2"というキーで値を追加したことで上書きされたら困る訳ですよ。
値が失われますからね。

224 :デフォルトの名無しさん:2011/07/05(火) 22:46:59.34
>>218
一般的にハッシュ法と呼ばれてるものと同じ。
つまり検索速度が落ちる。

225 :デフォルトの名無しさん:2011/07/05(火) 22:48:46.44
>>222
はい、キーは異なります。
キーが異なれば大丈夫と言う認識でよいのでしょうか?
それとも稀でも上書きされるのでしょうか?
それがとても気になっています。

226 :デフォルトの名無しさん:2011/07/05(火) 22:50:06.99
ぶつかってかつキーが違うなら、別の場所を使うだけだ

227 :デフォルトの名無しさん:2011/07/05(火) 22:51:30.38
>>219
シノニムが発生した場合の事いってるんじゃね?

228 : 【東電 72.7 %】 :2011/07/05(火) 23:01:19.83
>>225
>キーが異なれば大丈夫と言う認識でよいのでしょうか?

そのための「キー」だ。

229 :デフォルトの名無しさん:2011/07/05(火) 23:06:30.66
>「ハッシュの衝突」という、1 つのバケットが複数のエントリを格納する現象があり、
>その場合それらのエントリはシーケンシャルサーチされることになります。
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/Hashtable.html

HashMapも同様じゃね

230 :デフォルトの名無しさん:2011/07/05(火) 23:26:33.91
>>218
新旧キー同士のequals()が真にならない限り、上書きは絶対にありえないから安心しろ。

※ただしnullキー同士は上書きになる。

231 : 【東電 72.7 %】 :2011/07/05(火) 23:35:56.68
>>227,>>229
それはキーが「一致」した時でしょ。

232 : 【東電 72.7 %】 :2011/07/05(火) 23:36:57.23
うそ、大ボケこいた。

233 : 【東電 72.1 %】 :2011/07/05(火) 23:43:12.88
HaspMap.javaを覗いてみた。
新旧のハッシュ値が同じで同じインスタンスを指すか、新旧のequals()がtrueの場合に書き換えられるようだ。

234 :デフォルトの名無しさん:2011/07/05(火) 23:58:18.21
たくさんのレスありがとうございます。

>>224
速度を重視したい場合、マップの初期容量を大きくすればある程度マシになりますよね。

>>226
それなら安心です。
データの消失が最も恐ろしいので。

>>227
ハッシュの場合、コリジョンではなくシノニムというのですね。
すみません、言葉を知らなかったです。

>>228
キーをハッシュした値が被ったときの動作が気になっていました。

>>229
難しい言葉が出てますね・・・;
すでにあったら順繰りにってことでしょうか。

>>230
データ消失がなければ安心して使えますね。

>>233
equals による比較が行われているのであれば、
異なる文字列をキーにしている限り安心ですね。

とても勉強になりました。
ありがとうございました。
後学のため、シノニムについて調べてみます。
あと、HashMap.java を分かる範囲で覗いてみます。

235 : 【東電 72.1 %】 :2011/07/06(水) 00:05:17.22
>>234
最初からソース見て回答してればここまで伸びることは無かったのにと
反省してます。

236 :デフォルトの名無しさん:2011/07/06(水) 00:50:19.27
HashMapのソース初めて見たけどシノニムは普通のリンクリストで教科書的な実装なんだな
メモリアクセスの効率を考えるとエントリはオブジェクトにしないでガバッと配列にメモリ取って
インデックスで管理した方が速そうだけど

237 :デフォルトの名無しさん:2011/07/06(水) 09:29:47.80
JNAというのをhttp://d.hatena.ne.jp/t-katochin/20090122/1232615970でみたんですが、
自分のJavaのソースをShift_JISで保存した場合はMessageBoxA()、utf-8などUnicodeで保存した場合はMessageBoxW()関数を呼び出すということでいいでしょうか?

238 :デフォルトの名無しさん:2011/07/06(水) 09:31:45.52
Stringについて質問です。
なぜ、Stringでは同じ領域の値が変更出来ないのでしょうか?
APIに、値が変更出来ない、と書いてあるのでそれ自体はいいのですが、理屈を知りたいです。

239 :デフォルトの名無しさん:2011/07/06(水) 10:11:08.73
>>238
単なる設計上のテクニックだよ。
「immutable」や「不変オブジェクト」でググればいろいろと解説はあるはず。

240 :デフォルトの名無しさん:2011/07/06(水) 10:21:51.58
>>237
違う。

241 :デフォルトの名無しさん:2011/07/06(水) 11:22:14.43
何この糞っぷり?w

242 :デフォルトの名無しさん:2011/07/06(水) 17:38:10.41
リフレクションについての質問です。
以下のような実装を行った場合、これはリフレクション機能を使用したことになるのでしょうか?

MyContainer+ <T> void put(Class<T> type, T value)
MyContainer+ <T> T get(Class<T> type);
--------------------
String s = "str";
Integer i = 10;

MyContainer container = new ...;

container.put(String.class, s);
container.put(Integer.class, i);
...
String ss = container.get(String.class);
Integer ii = container.get(Integer.class);

どの機能がリフレクションを利用しているかがいまいちわかりません。

243 :デフォルトの名無しさん:2011/07/06(水) 17:40:45.79
リフレクションっつーかgenericsじゃね?

java.lang.Class自体はリフレクションの一部っちゃ一部だけど。

244 :デフォルトの名無しさん:2011/07/06(水) 22:13:03.33
リフレクションはこういうのだ

public static void show(Object obj){
System.out.println(obj.getClass() + ", " + obj.toString());
Method[] methods = obj.getClass().getMethods();
for (Method m : methods) {
String name = m.getName();
if(m.getParameterTypes().length==0 && name.matches("^(get|is|can|length).*$"){
System.out.printf(" %-20s : %s\n", name, m.invoke(obj, new Object[]{}));
}}}

245 :デフォルトの名無しさん:2011/07/06(水) 22:25:18.17
いやobjcだろ。これからは。

246 :242:2011/07/06(水) 22:46:22.68
返信ありがとう御座います。

>>243さん
Classクラスの実装を読んでみましたがやっぱりリフレクション使ってるみたいですね。

>>244さん
String.classとか使用するのはリフレクションの一部だという認識は間違っているのでしょうか?
上のコンテナと普通のString,Objectペアのコンテナを作って速度を比較したところ上のコンテナが3倍遅い結果になってしまいました。

247 :デフォルトの名無しさん:2011/07/06(水) 23:39:43.65
クラスリテラルはString.classのときClass.forName("java.lang.String")の結果と等価らしいのでリフレクションみたいです
プリミティブ型のラッパーのInteger.classはInteger.TYPEへのフィールドのアクセスと同じなんで遅くならないっぽいです

248 :デフォルトの名無しさん:2011/07/07(木) 04:53:39.51
Classや.classを使ったからと言ってそれをわざわざ「リフレクションを使ってる」とは言わんと思うぞ。

249 :デフォルトの名無しさん:2011/07/07(木) 09:14:46.68
sql = "SELECT * FROM テーブル名 WHERE "+s[1]+s[2]+……+s[i]+"";

sの配列の要素数に応じて↑のような感じで打ちたいんですがどういうふうに書けばいいですかね?

250 :デフォルトの名無しさん:2011/07/07(木) 09:35:41.80
>>249
for

251 :デフォルトの名無しさん:2011/07/07(木) 09:37:35.74
ありがとうございます試してみます

252 :251:2011/07/07(木) 09:43:59.06
すいませんfor文で回そうとしてもどうやるのかわかりません教えてもらえませんか?

253 :デフォルトの名無しさん:2011/07/07(木) 09:52:44.65
>>252
こんな感じ

sql = "SELECT * FROM テーブル名";
int youso = 0;
for(i=0; i<s.length; i++) { youso++; }
if(0 < youso) sql += " WHERE ";
if(youso == 1) sql += s[0];
if(youso == 2) sql += s[0] + s[1];
if(youso == 3) sql += s[0] + s[1] + s[2];
………
↑以下必要な分だけ適当に増やす
youso == 100ぐらいまであれば安心

254 :デフォルトの名無しさん:2011/07/07(木) 09:55:20.35
なるほど!結構力技なんですね!ありがとうございます!

255 :デフォルトの名無しさん:2011/07/07(木) 09:55:59.45
ごめんごめん
ちょっと訂正

× for(i=0; i<s.length; i++) { youso++; }
◎ for(int i=0; i<s.length; i++) { youso++; }

256 :デフォルトの名無しさん:2011/07/07(木) 10:01:33.37
for (String a : s) {
 sql += a;
}

だろJK

257 :デフォルトの名無しさん:2011/07/07(木) 10:03:42.68
>>253
お前様の>>249に対する”意図”ってのは分かったけど、
もう少しうまい組み方ってあると思うぞ

なんか、お前様の方が無様に見えるぜ

258 :251:2011/07/07(木) 10:09:19.35
sql += "SELECT * FROM wh_table WHERE ";
for(int i=1;i<s.length;i++){
   sql+=s[i];
}
お二方の共試したんですが、だめでした。↑のも試してみたんですがだめでした。java.sql.SQLException: near "nullSELECT": syntax errorとでてるんですがどこがおかしいのかわかりません・・・


259 :デフォルトの名無しさん:2011/07/07(木) 10:12:01.44
どんだけ考える気がないんだよw
さては、ゆとりか

260 :251:2011/07/07(木) 10:17:24.30
かいけつしました・・・
>>258
の1行目の+=の+を削ったら出来ました。みなさんありがとうございます

261 :デフォルトの名無しさん:2011/07/07(木) 10:20:26.80
>>257

お前>>249だろw
ググれば3秒で分かる質問してっから遊ばれてんだよ
ってかJava無関係なアルゴリズムの質問はスレチ

ふざけた回答ながらもfor文のヒントを提示してもらってる事にも気付けないなんて、無様だぞ

262 :デフォルトの名無しさん:2011/07/07(木) 10:43:04.14
>>261
無様ね

263 :デフォルトの名無しさん:2011/07/07(木) 10:46:12.14
スレチうんうんはともかく、
結局修正レスまでした>>253がスルーされた件について

264 :デフォルトの名無しさん:2011/07/07(木) 12:05:22.56
>>259
ぼくゆとりなにかもんくある?

265 :デフォルトの名無しさん:2011/07/07(木) 12:11:00.69
無様

266 :デフォルトの名無しさん:2011/07/07(木) 12:19:40.30
なしさま・・・??

267 :デフォルトの名無しさん:2011/07/07(木) 12:31:13.68
>>259
ぼくゆとりだよ?

268 :デフォルトの名無しさん:2011/07/07(木) 14:48:41.38
じゃぁ、おれも!

269 :242:2011/07/07(木) 15:30:48.79
>>247さん
貴重な助言ありがとう御座います。すっきりしました。

>>248さん
確かにその程度の利用だとリフレクションと言い難いかもしれませんね。

遅くなりましたが返信してくれた方々ありがとう御座いました。

270 :デフォルトの名無しさん:2011/07/07(木) 15:31:27.13
俺もw

271 :デフォルトの名無しさん:2011/07/07(木) 17:21:28.26
いや。おれおれも

272 :デフォルトの名無しさん:2011/07/07(木) 17:27:33.04
どうぞどうぞ

273 :デフォルトの名無しさん:2011/07/07(木) 17:54:03.71
JFileChooserでファイルを保存するダイアログとか開くと
カレントディレクトリ(Windowsの場合だとMyDocument/Linuxの場合ユーザのホームディレクトリ)
がデフォルトで開くみたいですが、そのカレントディレクトリのパスを取得するには、どうしたらいいんですか?

274 :デフォルトの名無しさん:2011/07/07(木) 17:56:48.82
"." ファイルでオブジェクト作ってパス取りだすとか。
ルートでも行けるのかは試してないが

275 :デフォルトの名無しさん:2011/07/07(木) 17:58:07.83
System.getProperty("user.home")

たぶん。

276 :デフォルトの名無しさん:2011/07/07(木) 17:59:46.76
System.getProperty("user.dir")

277 :273:2011/07/07(木) 18:05:37.86
どうもありがとうございました。

import java.io.*;

public class Sample1J {

public static void main(String[] args) {
System.out.println(System.getProperty("user.home"));
String sPath = (new File(".")) .getAbsoluteFile().getParentFile().toString();
System.out.println(sPath);
}
}

試してみたところ、
C:\Documents and Settings\hogehoge
C:\Program1\java
となりました。

どうも、System.getProperty("user.home"); で、いけるみたいです。

みなさん、どうもありがとうございました。できるんですね、こんなこと・・

OSを取得してJNIとかつかおうとおもっていました。。

278 :デフォルトの名無しさん:2011/07/07(木) 18:06:26.64
学習はじめて半年ですが
クラスライブラリのコードを読むのって
勉強にいいでしょうか?

たくさん読めと言われていますが

279 :デフォルトの名無しさん:2011/07/07(木) 18:09:21.17
>>277
ごめん、正解はたぶんこっち。
javax.swing.filechooser.FileSystemView.getFileSystemView().getDefaultDirectory()

280 :デフォルトの名無しさん:2011/07/07(木) 18:11:22.03
読むならクラスライブラリよりアプリケーションのソースの方が勉強になると思う
クラスライブラリって特定目的の細かい実装コードの寄せ集めみたいなのが多いから
その特定目的についての勉強でないならお勧めしない

281 :デフォルトの名無しさん:2011/07/07(木) 18:14:48.70
>>278
たくさん読めって言われてんだからクラスライブラリもフレームワークもアプリケーションも読め。
質問してる暇があったら読め。

282 :デフォルトの名無しさん:2011/07/07(木) 18:18:44.09
>>281
ありがとうございます。
その中でオススメとかありましたらご教授
お願いします。


283 :デフォルトの名無しさん:2011/07/07(木) 18:27:48.74
別に読まなくていいのに

284 :277:2011/07/07(木) 18:33:23.15
>>279
へぇ・・こんなものもあるんですね。

それにしても、>>279さん、よく知ってますね(;^_^

285 :デフォルトの名無しさん:2011/07/07(木) 18:39:00.10
>>284
ぼくゆとりだよ?

286 :デフォルトの名無しさん:2011/07/07(木) 20:08:07.19
>>282
JDKに入ってるsrc.zipの中身。

287 :デフォルトの名無しさん:2011/07/07(木) 20:34:38.51
それこそ>特定目的の細かい実装コードの寄せ集め

288 :デフォルトの名無しさん:2011/07/07(木) 20:42:53.73
いや、java.lang, java.util, java.io あたりは基礎だろ。
英語だけどコメント豊富なのと、細かいコードを切り分けて読めれば
一つ一つのコードは短いので初心者向きだし。

289 :デフォルトの名無しさん:2011/07/07(木) 21:55:09.77
標準ライブラリに入ってるのは世界中の全てのアプリケーションが使うため
パフォーマンスの名目でごにょごにょするのが、相対的に、より正当化される。
通常はアンチパターンと呼ばれるような、
無条件でマネしてはいけない痛いことをしているかもしれない。


290 :デフォルトの名無しさん:2011/07/07(木) 23:38:23.21
Windowsで作成したプログラムはLinuxなどで文字化けが起こりますか?

291 :デフォルトの名無しさん:2011/07/07(木) 23:46:05.63
起こるかもしれないし、起こらないかもしれない。

292 : 【東電 64.9 %】 :2011/07/08(金) 01:08:15.10
>>290
入力元、出力先どこ?

293 : 【東電 64.9 %】 :2011/07/08(金) 01:17:57.44
>>292
言い直し。
デフォルトのエンコーデイングと異なるエンコーデイングのデータを扱うなら、意識した実装しないと化ける。
で、どういったデータを扱おうとしてるの?

294 :デフォルトの名無しさん:2011/07/08(金) 11:39:19.36
クラスのシリアライズ・デシリアライズで質問です。

AというクラスとBというクラスのフィールドが全く
同じだった場合にAをシリアライズしたものをBに
デシリアライズする方法が必要で、こちらについては
デシリアライズの際のObjectInputStreamの
readClassDescriptorをオーバーライドしてクラスを変換
することで実装することができました。
http://ideone.com/qquLQ

しかしArrayList<A>をシリアライズしたものをArrayList<B>
にデシリアライズする方法で詰まっております。

何か方法をご存知でしたらご教授下さい。

295 :デフォルトの名無しさん:2011/07/08(金) 12:39:50.90
Windowsでgitをインストールしている環境なのですが、
JFileChooserをインスタンス化した際に、

fatal: Not a git repository (or any of the parent directories): .git

というメッセージがコンソールに出ることに気づきました.
実際にJFileChooserで表示されるダイアログでディレクトリを移動したりすると、
さらに上記のメッセージが一回ずつ表示されます.
実害は無いのですが、どうしてこうなるのでしょうか?

296 :デフォルトの名無しさん:2011/07/08(金) 12:41:38.66
>>294
同じObjectInputStreamのサブクラスを使えばいいんじゃね?


297 :デフォルトの名無しさん:2011/07/08(金) 13:09:33.36
>>296
同様の方法ですと
desc.getName()の箇所がjava.util.ArrayListまでしか取れず
ArrayListの中に保持している型までは取れないのです。

ArrayListのデシリアライズ時に内部処理で各要素に使う
ObjectInputStreamが設定出来ればとも思うのですが、方法が
わかりません。

298 :295:2011/07/08(金) 13:57:29.09
自己解決しました。
readClassDescriptorはArrayListそのものと
内部メンバの型情報取得時両方について呼ばれる
みたいなので、同じやり方でいけました。

299 :デフォルトの名無しさん:2011/07/08(金) 19:28:29.93
>>295
バグレポートにあがってるね。
https://netbeans.org/bugzilla/show_bug.cgi?id=194242

なんでこんなことになってんだろ。

300 :デフォルトの名無しさん:2011/07/08(金) 19:42:42.50
swingで、プログレスバーを右から左に伸びるようにしたいのですが、
どのようにすればできるでしょうか。

301 :デフォルトの名無しさん:2011/07/09(土) 10:13:57.61
皆さんJAVA歴 何年ですか?

そして、プログラムを好きでやっていますか?
給料が良いからですか?

参考にさせてください!
よろしくお願いします!


302 :デフォルトの名無しさん:2011/07/09(土) 10:31:40.16
今のクロージャーの仕様って Scala や Ruby みたいにブロックは書けるの?

303 :デフォルトの名無しさん:2011/07/09(土) 10:32:59.79
プログラム歴は25年でJava歴は10年で給料は年収700万で
プログラムは好きで土日もフリーソフトをつくってます。

304 :デフォルトの名無しさん:2011/07/09(土) 10:37:50.71
>>303
ありがとうございます。
休みなくやってる感じですね!
好きじぁないとやれない世界ですか?
それか働いていくうちにやりがいを見つける世界ですか?

305 :デフォルトの名無しさん:2011/07/09(土) 10:40:25.66
ブロックに何を期待してるのかによる

306 :デフォルトの名無しさん:2011/07/09(土) 10:48:55.37
StringBuffer の charAt ってなんて読むの?
キャラアット? キャラエーティー? キャラット?

307 :デフォルトの名無しさん:2011/07/09(土) 10:55:53.78
>>306
読み方などどうでもいい

308 :デフォルトの名無しさん:2011/07/09(土) 12:05:31.79
AH(IPsec) : あー
C++ : しーぷらすぷらす
IEEE : あいとりぷるいー
ext2 : えくすてんど に
DoS Attack :どすこうげき

まあ、読み方なんてどーでもいい


309 :デフォルトの名無しさん:2011/07/09(土) 12:20:48.35
TestCase クラスのコンストラクタ TestCase(String name) ってどんな時に使うの?
↓の API リファレンス見ると「テストケースのメソッド名を引数とするコンストラクタ」って書いてあるけど
テストケースのメソッド名なんて意識しないし。

TestCase
ttp://www.asahi-net.or.jp/~xm5y-ysng/junit/javadoc/junit/framework/TestCase.html#TestCase(java.lang.String)

310 :デフォルトの名無しさん:2011/07/09(土) 12:52:03.36
>>301
プログラム歴10年。Java歴10年。Javaから入り、他の言語やコンピュータの構造なども勉強しました。

最初は仕事でやっていましたが、その頃は苦痛でした。
しかし、やめたあとも趣味というか暇つぶしでやっていて、最近おもしろくなりました。

311 :デフォルトの名無しさん:2011/07/09(土) 12:57:18.01
すっごいくだらいことですが、

ArrayListにtrimToSize()ってのがあるってことは、remove()してもサイズが変わっていなかったりするってことでしょうか?

312 :デフォルトの名無しさん:2011/07/09(土) 13:08:09.38
>>311
ArrayList#size() の戻り値は呼び出しの前後で変化するが、
内部で使用している配列はそのままだったりする。

313 :デフォルトの名無しさん:2011/07/09(土) 13:19:07.53
>>309
reportの一覧性のために使う…とか?

314 :デフォルトの名無しさん:2011/07/09(土) 13:28:55.55
>>312
どうもありがとうございます。

trimToSizeはメモリの節約のために使うってことで良いんでしょうか?

315 :デフォルトの名無しさん:2011/07/09(土) 15:42:41.28
ブロック・レズナー!

Here comes the pain!!


316 :デフォルトの名無しさん:2011/07/09(土) 17:30:15.33
>>313
レスありがとうございます。
すみません。reportの一覧性とはどのような意味でしょうか

317 :デフォルトの名無しさん:2011/07/10(日) 03:51:04.62
hostsを編集せずにvm上での通信のホストを、任意のipに向かわせる方法ってない?


318 :デフォルトの名無しさん:2011/07/10(日) 09:41:18.73
>>317
たとえば、コマンドラインで、

java Hoge -ip 192.168.0.29

とかでもいいの?

319 :デフォルトの名無しさん:2011/07/10(日) 10:31:51.24
proxy設定しろ、
という話ではなくて?

320 :デフォルトの名無しさん:2011/07/10(日) 16:43:16.09
>>317
java.net.Socket#setSocketImplFactory()
でオリジナルのソケット実装使わせることができるぞ。

URLアクセスに特化した話なら
java.net.URLConnection#setContentHandlerFactory
でも十分だと思うが。

321 :デフォルトの名無しさん:2011/07/10(日) 20:00:14.46
GZIPInputStreamみたいなGzipのオープンソース実装ってないでしょうか?

AppEngineでGZIPInputStreamを使った実装で解凍を行うと、
PC上の環境とAppEngine上で違う動きをするので、
(PC上だと正常に解凍できるが、サーバ上だとエラーになる)
GZIPInputStreamの別実装を探しています

具体的には、Gzipされたものを解凍したいだけです。

よろしくお願いします。


322 :デフォルトの名無しさん:2011/07/10(日) 20:03:16.98
DOMってもう使われなくなるの?

323 :デフォルトの名無しさん:2011/07/11(月) 01:31:20.39
>>322
なんで? JAXBやStaxと違って他の言語と共通の仕組みであることが利点だよ。

僕の質問:
EJBコンテナ(セッションビーン)を何に使うのかわからないんですけど、
Apache+Tomcatがhttpリクエストの分散に対して
EJBはWeb(http)とは関係ないRMI(ロジック部分の分散)ということで
あってますか?
EJB鯖がロードバランサになり、他のEJB鯖がロジックを振り分けられる
ノード鯖になる、と。

324 : 【東電 52.4 %】 :2011/07/11(月) 04:37:00.71
>>323
・インスタンスプール
・メソッドごとに権限設定、トランザクション制御
・属性指定によるトランザクション制御
・負荷分散
かな。これらを利用しないのであれば、面倒なだけの代物。

325 :デフォルトの名無しさん:2011/07/11(月) 10:45:44.14
javaをEclipse使って書いているのですが、
バグ検索を使用してみると、同期化が考慮されていません。といった項目が出てきます。
80%がロックされている間ウンヌン

これって特に気にせず無視してもいいのでしょうか?
無視しなかった場合、どういった処理を追加すべきでしょうか?

ググっても何いってんだこいつ状態で、全く分からない

326 :デフォルトの名無しさん:2011/07/11(月) 11:07:38.99
synchronizedをすべて削除
もしマルチスレッド使ってるならやめる
その意味がわかんないならそのほうがいいよ

327 :デフォルトの名無しさん:2011/07/11(月) 11:13:59.71
>>326
とほほを流し読みにして何となく思ったのが

1Hまでに、ここまで勉強するぞ!って頑張るけど
途中アニメが始まってチラチラ見ながら進めてたら、目標時間までに全部終わらなかった的なイメージが湧いた

ThreadはThread.sleep(xx)位しか使ってないし、マルチスレッドもシンクロも使ってないから
放置してみる。thx

328 :デフォルトの名無しさん:2011/07/11(月) 16:16:30.10
自分専用のSwingの合計400行くらいの小さいプログラムですが、
通常はひとつのクラスにまとめちゃいますか?

また、クラスファイルをいくつも作るのはやりませんよね?

329 :デフォルトの名無しさん:2011/07/11(月) 17:11:24.16
通常は一つのjarにまとめるな

330 :デフォルトの名無しさん:2011/07/11(月) 17:20:57.26
>328
自分が書きやすい、読みやすいように書いたら良い

けど普通は400行あると、2,3にはわかれそう

331 :デフォルトの名無しさん:2011/07/11(月) 17:23:33.03
>323
あってるよ
けどEJBのコードの書きにくさ、設定の難解さで最近は使われないけど。

332 :デフォルトの名無しさん:2011/07/11(月) 19:26:15.28
>>328
そもそも、なんだけど、
クラスってのは分けなきゃならないんじゃなくて、
必要に迫られて分かれるもんだ。

333 :デフォルトの名無しさん:2011/07/11(月) 20:12:04.07
BufferStrategyでフレームを全描画させつつ
パネルにボタンとかを設置して使用したいのですが
どうにもパネルの上に描画されてしまうのですが
パネルを前面に出す方法はないでしょうか orz

334 :デフォルトの名無しさん:2011/07/12(火) 00:06:32.97
OCJPと基本情報ってどっちが難しいの?

335 :デフォルトの名無しさん:2011/07/12(火) 11:59:29.18
皆さん残業はどれくらいしてますか?

336 :デフォルトの名無しさん:2011/07/12(火) 12:16:05.86
>>334
> OCJPと基本情報ってどっちが難しいの?

どちらも簡単過ぎて比べられない

337 :デフォルトの名無しさん:2011/07/12(火) 12:45:34.56
javaでネットワークのプログラミングするときの質問なんですが、

プライベートIPのPC---ルータ---グローバルIPのPC
↑の構成の時、プライベート側からTCP,UDP通信は成功するんだが、
グローバルIPのPC側からプライベートIPのPCにUDP通信をすると失敗するのだけれど、解決方法はないでしょうか?
グローバルIPのPC側から通信するときはルータが持っているグローバルIPに対して通信を試みています

338 :デフォルトの名無しさん:2011/07/12(火) 13:07:13.21
>>337
Javaの質問じゃなくて、ネットワークの質問だねこれ。
ルーターのポートフォワーディングの設定がどうなっているか、どこまでできるか次第だね。

339 :デフォルトの名無しさん:2011/07/12(火) 13:11:05.14
>>337
Javaに関係ないけど無理
だからプライベート側からグローバルのPCにコネクションを確立した後にそのコネクションを介してやり取りさせるしかない

UDPホールパンチングという方法もあるけど、第三者がいないと無理だし
あとはuPnPとか

ポート開放すればいいんですねとかいうレベルの話じゃないよね

340 :デフォルトの名無しさん:2011/07/12(火) 13:16:22.48
>>338
スレ違いみたいで、すいません
ポートの開放については確認済みで、念押しにDNS用の53ポートでも試してみたけど、だめでした

>>339
つまり、グローバル側からアクセスするにはプライベートからのTCP確立
もしくは、中継を担うものがないとできないということでしょうか?

スレ違いのような質問にお答えいただきありがとうございます。

341 :デフォルトの名無しさん:2011/07/12(火) 13:32:21.65
OCJPなのかOJCPなのかどっちだよ名前変えるなよ

342 :デフォルトの名無しさん:2011/07/12(火) 13:40:23.53
Oracleのページでは

Sun認定Javaプログラマ(SJC-P)
Oracle認定Javaプログラマ(OCJ-P)

ってなってるな
でもOJCPって言ってる奴が余りにも多い

343 :デフォルトの名無しさん:2011/07/12(火) 14:04:40.74
>>340
スレ違い

344 :デフォルトの名無しさん:2011/07/12(火) 14:39:36.19
>334
資格は、その資格を持ってる人しかその資格の優位性がわからない
(資格を否定する人は、資格を持ってない人がほとんど)

だから、どっちが良いかは状況による

345 :デフォルトの名無しさん:2011/07/12(火) 14:42:42.30
どっちが難しいの?って聞かれてるのに>>344みたいな回答しちゃう奴ってやっぱり低学歴?

346 :デフォルトの名無しさん:2011/07/12(火) 14:42:43.40
このスレで質問して良いかわかりませんが、ImageJのJavaプラグインをC#に移植しています。

http://www.optinav.com/download/Diffraction_PSF_3D.java
このソースなのですが、肝心の画素はどこから取得しているのでしょうか?
引数のString argは使用されていませんし、GenericDialog gdもパラメータを設定しているだけです。

どこか見落としているだけかもしれませんが、よろしくお願いします。

347 :デフォルトの名無しさん:2011/07/12(火) 15:26:04.52
>>346
パッと見 pixels に0-255の計算値突っ込んでるようにしか見えないけど
何か外から画像取り込んだりするプログラムなの?

348 :デフォルトの名無しさん:2011/07/12(火) 15:28:19.40
もともとこのプラグインはrun()の引数がImageProcessor ip
になってるのが普通みたいだな。

349 :デフォルトの名無しさん:2011/07/12(火) 15:34:18.44
>>334
求められてることが違うのだから比較できるものではないだろ。
どっちも同じに見えるなら、基本情報取っとけ。

350 :デフォルトの名無しさん:2011/07/12(火) 15:41:51.70
>>347
一度画像を読み込んで、そこからPSF(点広がり関数)の画像を計算する物と思っていましたが・・・
やっぱり計算値を突っ込んでるだけにしか見えませんよね。

画像処理関係のほうで聞いてみます。
ありがとうございました。
http://www.thinkbasis.net/jp/main_news.0.html?&tx_ttnews%5Btt_news%5D=67&tx_ttnews%5BbackPid%5D=6&cHash=b296cb6022

351 :デフォルトの名無しさん:2011/07/12(火) 16:37:52.48
勉強時間の目安で比較するならSJCPの方が若干難しいよ

352 :デフォルトの名無しさん:2011/07/12(火) 16:55:22.12
基本情報なんて高2のときに趣味で取った。

353 :デフォルトの名無しさん:2011/07/12(火) 17:34:55.53
paintComponentのなかで画像を描画したいです
このなかで画像を描画するにはどうしたらいいのでしょうか?
getDocumentBaseで画像を選択しているのですが

game.java:38: シンボルを見つけられません。
シンボル: メソッド getDocumentBase()
場所 : sh の クラス
sound = getAudioClip(getDocumentBase(), "test.jpg");
と出てしまいます…

メインメソッドがあるのはclass gameでJFrameを使用しています
class shはJComponentを継承しています
その中にpublic void paintComponent(Graphics g)を記述しているのですが
シンボルが見つけられませんと出てしまいます…





354 :デフォルトの名無しさん:2011/07/12(火) 17:52:59.21
getDocumentBase()はアプレットのメソッドだけど、アプレットを作りたいの?
それならJFrameじゃなくてAppletかJAppletを継承しないと
画面の描画はpublic void paint(Graphics g)をオーバーライドして記述すればいいよ?

355 :デフォルトの名無しさん:2011/07/12(火) 17:58:35.88
>>354
すみません あまり理解していませんでした…
色々やっていったところ
JLabelを使ったら画像を表示することができました!
ありがとうございます

356 :デフォルトの名無しさん:2011/07/12(火) 18:05:39.46
作戦は「いろいろやろうぜ」だな

357 :デフォルトの名無しさん:2011/07/12(火) 19:27:22.42
JFrameで音を再生させたいのですがどうすればいいのでしょうか?
Appletを継承させた新しいクラスを作って戻り値?で返せばいいのですかね?



358 :デフォルトの名無しさん:2011/07/12(火) 20:52:38.93
すみません 自己解決です
JFrameに拘らずHTMLファイルもつかうことにしました




359 :デフォルトの名無しさん:2011/07/13(水) 06:57:08.49
JFrameで音が流れるんですか
ふっしぎ〜♪

360 : 【東電 51.2 %】 :2011/07/13(水) 07:13:12.92
JFrameってバンドじゃないだろーか?ww

361 :デフォルトの名無しさん:2011/07/13(水) 08:04:11.69
馬鹿ばっか

362 :デフォルトの名無しさん:2011/07/13(水) 15:01:24.26
すみません 色々やっていったところ
インターネッツを使ったらエッチな画像を表示することができました!
ありがとうございます

363 :デフォルトの名無しさん:2011/07/13(水) 16:37:35.82
fm

364 :328:2011/07/13(水) 16:39:46.99
>>329
ども。自分もひとつの.jarにまとめるつもりです。

>>330
ども。クラスが、2、3個になることもあるんですね。自分のやりたいようにやると
たしかに、2,3個に分けたほうがなんとなくいいような気がしました。自分もそっちの方が
やりやすいので、そうします。とても参考になりました。

お二人様、どうもありがとうございました。自分はアマチュアなので、とても参考になります。

365 :デフォルトの名無しさん:2011/07/13(水) 16:47:51.86
ぢあぇw;おうえあ3

366 :デフォルトの名無しさん:2011/07/13(水) 19:01:20.57
標準的な日立のJavaコード規約では1クラス200行が目安だったな。

367 :デフォルトの名無しさん:2011/07/13(水) 19:26:02.66
クラスで200ってきつそうだな
ついつい400はかいちゃったりするが・・・
社員さんは大変だねぇ

368 :デフォルトの名無しさん:2011/07/13(水) 19:45:23.01
>>366
>>367
可読性から着てるんだろうけど、
そういう基準があるから、
クラス設計を勘違いする輩が多く出てくるんだよ。

多人数でやってるから、とか変な理由付けがあるんだろうけど、

だからこそ、クラス設計が重要であって行数なんか重要で無いわけで。

もちろん、行数制限が無いと、めいっぱいコードを書きなぐる(優秀と、馬鹿な)奴が出てくるから制限しているんだろうけど。

369 :デフォルトの名無しさん:2011/07/13(水) 20:54:31.57
struts1.1経験者の方いらっしゃいますか?
タグライブラリにて、コレクションのiterate要素となりえるinput系タグ
(html:textなど)にindexed属性がまだ無かった時、JSPからどのように
コレクションをActionFormに回収していらっしゃいましたか?

370 :デフォルトの名無しさん:2011/07/14(木) 03:28:16.71
RuntimeExceptionとかの非チェック例外の存在意義が良くわからん。
なんのためにあるの?


371 :デフォルトの名無しさん:2011/07/14(木) 04:32:39.09
なかったら実行時に発生するかもしれない例外を投げれないのだが

372 :デフォルトの名無しさん:2011/07/14(木) 08:07:15.06
Java7はよ

Sun Java JRE Insecure Executable Loading Vulnerability
ttp://secunia.com/advisories/45173
The vulnerability is confirmed in version 6 update 26 (build 1.6.0_26-b03).
Other versions may also be affected.

373 :デフォルトの名無しさん:2011/07/14(木) 10:12:34.33
java7にpropertyだけはいれてほしかった

374 :デフォルトの名無しさん:2011/07/14(木) 17:11:06.17
Date d2 = new Date(0L);
DateFormat df2 = DateFormat.getDateInstance(DateFormat.LONG);
String s = "January 12, 1952";
try{
d2 = df2.parse(s);
System.out.println(d2);
}catch(ParseException e){
System.out.println(e);
}



これなんで例外投げるの?

java.text.ParseException: Unparseable date: "January 12, 1952"

375 :デフォルトの名無しさん:2011/07/14(木) 17:25:56.76
コピペしたが例外は飛んでこなかったぞ。
ParseExceptionはパースが失敗した位置も記録しているからそれを調べてみたら?

376 :デフォルトの名無しさん:2011/07/14(木) 17:30:54.86
>>374
DateFormat df2 = DateFormat.getDateInstance(DateFormat.LONG, Locale.US);


377 :デフォルトの名無しさん:2011/07/14(木) 17:32:42.53
>>374
http://java.sun.com/javase/ja/6/docs/ja/api/java/text/DateFormat.html
> 正確な結果はロケールに依存しますが

378 :デフォルトの名無しさん:2011/07/14(木) 17:40:14.97
>>375 >>376

ども、デフォルトのロケールじゃダメだったか

379 :デフォルトの名無しさん:2011/07/14(木) 19:24:47.31
【1】
Hoge hoge = null;
ArrayList<Hoge> hogeList = new ArrayList<Hoge>();
for(int i = 0; i < 10000; i++) {
hoge = new Hoge();
hoge.setA(i);
hoge.setB(i * 5);

hogeList.add(hoge);
}

【2】
ArrayList<Hoge> hogeList = new ArrayList<Hoge>();
for(int i = 0; i < 10000; i++) {
Hoge hoge = new Hoge();
hoge.setA(i);
hoge.setB(i * 5);

hogeList.add(hoge);
}
※Hogeは自分で定義したクラスだと思ってください。

上記のソースの場合、性能に差はあるのでしょうか?

380 :デフォルトの名無しさん:2011/07/14(木) 19:39:30.81
>>379
最適化されて同じバイトコードになるから差はないよ

381 :デフォルトの名無しさん:2011/07/14(木) 20:02:29.80
最適化されなくても Hoge hoge = null 以外同じバイトコードになると思うが。

382 :デフォルトの名無しさん:2011/07/14(木) 20:32:01.74
差は有るよ。あるけどお風呂にピペットで1滴水を加える程度だよ。

383 :379:2011/07/14(木) 21:01:48.09
ありがとうございます。

最適化されるのですね。でもソースレビューの事などを考えると1のコードの方がいいですね。

384 :デフォルトの名無しさん:2011/07/14(木) 21:07:09.22
>>383
無駄に名前空間汚す癖のある奴だな、と思われたいなら 1の方がいい。

385 :デフォルトの名無しさん:2011/07/14(木) 21:13:07.02
>>379
どこで性能に差が出る可能性があると思ってるの?

386 :デフォルトの名無しさん:2011/07/14(木) 21:14:53.23
>>385
1行目じゃないの?
無駄にnullで初期化してるとこ。

387 :379:2011/07/14(木) 21:53:23.88
ループ内で変数宣言すると良くないと、学校で言われたのですが違うのでしょうか?

388 :デフォルトの名無しさん:2011/07/14(木) 21:54:40.08
ループ内で変数宣言したほうが良い
というより、変数の参照範囲が最小限になる場所に宣言するのが基本

389 :デフォルトの名無しさん:2011/07/14(木) 22:00:31.19
>>387
そのときには、ループ内で無駄にインスタンス生成してなかった?


390 :379:2011/07/14(木) 22:00:36.95
>>388
そうなんですか。
違ってたらすいませんが、ループ内で変数宣言するとループ毎にインスタンスが生成されてしまうのではないのですか?

391 :デフォルトの名無しさん:2011/07/14(木) 22:01:37.67
ループ内でnewするなの間違いじゃないの?
オブジェクトを使いまわせる場合はループの外でnewして使い回したほうがよい場合はある
でも>>379のケースはどっちみちループ内でnewするんだから当てはまらない

392 :デフォルトの名無しさん:2011/07/14(木) 22:07:27.08
>>390が言いたいのは、Hogeのインスタンスを指す変数hogeのことか。
一見ループする度に作られるように見えるけど、実際にはコンパイラが最適化してるんじゃなかったっけ?

393 :379:2011/07/14(木) 22:08:08.22
>>391
そういうことですか。
今回のような場合はループ内でnewするのは仕方ないのDeathね。

394 :デフォルトの名無しさん:2011/07/14(木) 22:08:18.06
学校か
年寄り先生だったとか

395 :デフォルトの名無しさん:2011/07/14(木) 22:17:51.02
年寄りなら尚更そんな勘違いしちゃダメだろ
スタックの仕組みを学校の授業程度に理解してればわかって当たり前のこと

396 :デフォルトの名無しさん:2011/07/14(木) 22:23:45.37
ガベージコレクタ的なことも性能に入るなら後者がいいんじゃね

397 :デフォルトの名無しさん:2011/07/14(木) 22:28:36.17
スコープ抜けるときに自動的に使われなくなった参照を外してくれたりしたっけ?
後者でもメソッド抜けるまでは参照残るんじゃないの

398 :デフォルトの名無しさん:2011/07/14(木) 22:37:15.03
リストに突っ込んでるから結局使われなくなった参照は無くて
今回の例ではあんま意味なかった・・・ >ガベージコレクタ

ループ内だけでインスタンス使うなら後者の書き方がベターだよねという話



399 :デフォルトの名無しさん:2011/07/14(木) 22:53:34.85
ところでSE7がOpenJDKベースだけど今までのSUN JDKはこれからどうなるんだろうか?

400 :デフォルトの名無しさん:2011/07/14(木) 22:58:10.49
普通にOracleが出すよ
あくまでOracleがコミュニティに対してOpenJDKをGPLの下で恵んでやってるだけで
Oracle自身はライセンスには縛られない

401 :デフォルトの名無しさん:2011/07/14(木) 23:12:00.47
エム・エス・マンゴーが普及しようとしているこのご時世で、いつまでもジャヴァ+ドロイドなんかをマンセーしてるのは乞食かニートしかいないからな

402 :デフォルトの名無しさん:2011/07/15(金) 02:02:42.30
外部プロセスとしてJavaコマンドを実行して、タイムアウト監視をしつつその出力を取得したいのですが、うまくいきません。

使用しているのは
1.外部プロセスとして起動されるクラス
class hoge{
public static void main(String[] args){
System.out.print("hogehoge-Std");
System.err.print("hogehoge-Err");
}
}


403 :続き:2011/07/15(金) 02:04:53.00

2.外部プロセスを起動するクラス
-----前略-----------

Process child = Runtime.getRuntime.exec("java hogehoge");

InputStreamThread stdout = new InputStreamThread(child.getInputStream());
InputStreamThread stderr = new InputStreamThread(child.getErrorStream());

stdout.start();
stderr.start();

--------後略-------

その他、ttp://www.ne.jp/asahi/hishidama/home/tech/java/process.htmlを参考にしてInputStreamThreadを作成し、exitValue()を利用したタイムアウト監視をしています。

結果を確認すると、標準エラーも標準出力もまとめてstdoutに出力されているようなんです。
外部プロセスからSystem.errを取得することはできないのでしょうか?

404 :デフォルトの名無しさん:2011/07/15(金) 06:32:45.60
Runtime.getRuntime.exec じゃなくて ProcessBuilder を使え。

405 :385:2011/07/15(金) 13:02:02.58
>>387
null代入のコストじゃなくて変数宣言のこすとを気にしてる、ということね。
スタックに積まれるのは最初に代入されたときで、変数宣言自体のコストは0。
なので気にする必要は無いよ。

ttp://feather.cocolog-nifty.com/weblog/2010/05/post-a00a.html
にもう少し詳しい説明が。

406 :デフォルトの名無しさん:2011/07/15(金) 15:02:07.19
最後にアクセスされた順序を保持できるコレクションって
LinkedHashMap以外に何がある?

407 :デフォルトの名無しさん:2011/07/15(金) 15:36:44.35
LinkedHashMapって挿入順じゃなかったか?

408 :デフォルトの名無しさん:2011/07/15(金) 15:55:49.46
>>404
execって中でProcessBuilder呼んでるから差はないな。

とはいえ、ProcessBuilderのほうが勉強している感じがするw

409 :379:2011/07/15(金) 21:28:26.80
皆さんありがとうございました。
またまた質問があるのでよろしくお願いします。

【1】
private void methodA(boolean bool, Map<String, Integer> map, Hoge hoge) {
if(bool) {
map.put("str1", hoge.getA());
map.put("str2", hoge.getB());
} else {
map.put("str1", hoge.getC());
map.put("str2", hoge.getD());
}
}

【2】
private void methodA(boolean bool, Map<String, Integer> map, Hoge hoge) {
final String str1 = "str1";
final String str2 = "str2";
if(bool) {
map.put(str1, hoge.getA());
map.put(str2, hoge.getB());
} else {
map.put(str1, hoge.getC());
map.put(str2, hoge.getD());
}
}

上記のソースの場合は修正やメンテを考ると、
Mapのkey値は【2】のように定数宣言した方がいいのでしょうか?

410 :デフォルトの名無しさん:2011/07/15(金) 21:52:37.69
>>409
メソッド外で static final すんならともかく、メソッド内で定数は普通はしないな。
methodA とは別に map.get("str1") する必要があるメソッド内でも
final String str1 = "str1" とかやるんじゃ定数にする意味ないし。

411 :デフォルトの名無しさん:2011/07/15(金) 22:52:30.22
オーナーが持ってるチャイルドがオーナーの参照もってたら
循環参照でメモリリークします?

class Owner {
....List<Child> childList;
}

class Child {
....Owner owner;
}

412 :デフォルトの名無しさん:2011/07/15(金) 23:13:27.45
java(jvmでも可)でメモリリークを発生させるにはどうやればいいんでしょうか?

413 :デフォルトの名無しさん:2011/07/15(金) 23:15:18.69
>>411
No
http://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
それでリークするのは「参照カウント」。
Javaは「マーク・アンド・スイープ」。

こちらがまとまってる(リンク先も参照)
ttp://d.hatena.ne.jp/Kishi/20080209/1202552472


>>421
メモリを確保して参照しつつ使用はしない。

414 :デフォルトの名無しさん:2011/07/15(金) 23:15:56.73
>>411
しない
ルート(スタックか静的フィールド)から辿れないオブジェクトはGCの対象になる
>>412
static ArrayList refholder = new ArrayList();
refholder.add(new Object());

415 :デフォルトの名無しさん:2011/07/15(金) 23:27:12.09
>>413,414
gcが優秀なplatfはjvmかdotnetしかないから、webだなんだとappleやadobeやjsがどんなに騒いでも実質選択肢もこのどちらかしかないですよね。

416 :デフォルトの名無しさん:2011/07/15(金) 23:33:13.53
そういえばfirefox(最近対策がこうじられたそうですけど)のmallocしたまま滅多にfreeしない実質的メモリーリークに幻滅して、ブラウザはubuntu mozilla(1.7)のままなんですよ。
NN3, NN4, NN4.5(のバイナリー)とかも入手しにくくなってきてるんでいずれはmozillaもそういう運命なのかなって思います。

417 :デフォルトの名無しさん:2011/07/16(土) 01:11:54.28
タイプルーズで動的言語のgcと強い型付け言語のgc同列で語るとか頭悪そうだな。
それにfirefoxのgcはjavaとおなじ並列マーク&スリープだぞ。

418 :デフォルトの名無しさん:2011/07/16(土) 02:53:51.83
スイープ、な。

419 :デフォルトの名無しさん:2011/07/16(土) 03:00:50.98
gcが速いか遅いか高性能かどうかなどで影響あるようなplatfはplatfとして既に終わってると思うよ。
オラクルのjava7ではgcで差別化をしてgcで商売するようだけど、gcはpgではまったく制御できないからオラクル独断とみなされて見捨てられるんじゃないか。

420 :デフォルトの名無しさん:2011/07/16(土) 11:07:57.37
>>416
じゃあ、IEはメモリリークしまくりだなwww

421 :デフォルトの名無しさん:2011/07/16(土) 14:11:43.32
今はコンカレントGCだから組み込み、携帯やゲームでも固まりにくいんじゃないの?
昔のだと負荷が集中する理由でハードウェア強化しても改善しにくかったけど、
全体として重くても負荷が分散しているならハードウェア強化で改善しやすい

422 :デフォルトの名無しさん:2011/07/16(土) 15:10:21.59
>>419
TCKをオープンに使えるようにしたのがoracleの唯一の良心だな。

>>420
旧verだと実際にメモリリークしてたぞ。

423 :デフォルトの名無しさん:2011/07/16(土) 16:52:03.22
サーバからデータを取得するclass群をまとめたjarと、
そのjarが更新されていればサーバからダウンロードするjarを作りたいのですが、
ネットワーク接続やログ出力などは共通処理にしたいと考えています。
皆さんなら共通処理のclassのみを別のjarにしますか?
それともjar毎に共通処理のclassを含めますか?

また、jarを環境変数のclasspathに通すと、jarファイルがロックされて(?)
更新できないのですが、何か良い方法はないでしょうか?

OS:Windows XP SP3
Java:1.6 update 26

424 :デフォルトの名無しさん:2011/07/16(土) 18:19:34.88
いっそのことnovell+monoもoracleが買っちゃえばよかったのかなって思う。
今だとmonoはappleが引き取るのがいいかなって思う。
appleはllvm+objcなんかに投資しないで素直にms+mono路線というのもありえた。

425 :デフォルトの名無しさん:2011/07/16(土) 20:35:33.94
monoは死んだ…

426 :デフォルトの名無しさん:2011/07/16(土) 20:42:34.78
とすると残るはadobeがmonoを引き取ることになるんだろうか
なかなかイメージしにくいが

427 :デフォルトの名無しさん:2011/07/16(土) 20:46:37.28
monoはもう新しい企業として独立してるよ

428 :デフォルトの名無しさん:2011/07/16(土) 21:36:52.71
javaや噂のjavafxなんですが、c#やsilverrigthがあるから出る前からもうダメだjavaなんかもう終わってるってよく聞くんですけど、
今後のjavaはやっぱりもう何も期待できないんですか?(ウェブ・ネットワークとデスクトップ開発的に)

429 :デフォルトの名無しさん:2011/07/16(土) 21:41:52.08
モバイル界ならきっと・・・

430 :デフォルトの名無しさん:2011/07/16(土) 21:44:05.21
JavaFXはモバイル切ったよ。
ってAndroidのこと?

431 :デフォルトの名無しさん:2011/07/16(土) 21:52:43.38
MSは個人開発者にマーケチィングを展開してIT系記者に金バラまきながら必死にアピールしてますけど、オラクルは旧サンに比べて金持なのに何もしてませんよね。
オラクルはopenoffice,opensolarisの件もあるしjava,javafxのアピールはさっぱりだしやる気ないというよりやっぱり終わってるんですよね。
それとjavaをどこのplatfの開発者をメーンターゲットにしてjava,javafxを売り込もうとしてるんですか。

432 :デフォルトの名無しさん:2011/07/16(土) 22:11:07.34
自社のサーバーとDBが売れりゃいいんだよ

433 :デフォルトの名無しさん:2011/07/16(土) 22:15:34.33
2006年ごろの当時のJAVA PLATFORMはもう既にLINUXなどと同じくGPLライセンスでリリースされていた

434 :デフォルトの名無しさん:2011/07/16(土) 22:19:15.54
>>428
javaはandroidとサーバサイドあるから、まだ行ける
javafxは手を出すだけ時間の無駄

c#はwindows向けなら、c#が有利
ランタイムのうpデートの面でも有利
(珍しくwinうpデートを褒められる所w)


435 :デフォルトの名無しさん:2011/07/16(土) 22:27:01.96
ていうか定期的に沸く初心者装ったアンチの相手すんなよ

436 :デフォルトの名無しさん:2011/07/16(土) 22:34:18.95
javafxやsilverlightはともかく、windows phoneが流行ることはないと思いますよ。
流行る可能性があったとしてもIT業界全体が商売相手としてのMSを毛嫌いしていてMSを締め出しているので。
デスクトップosもx86全盛の今ならまだまだMS独占でしょうけどx86には開かれた未来はもうないのでいずれは・・・

437 :デフォルトの名無しさん:2011/07/16(土) 22:49:16.05
>>435
それは出来ないな
私もjavaは一定の評価しつつもc#支持者なんでね

デフォルトでGUIデザイナ付いてるのは大きい
コンパイラもIDEもGUIデザイナもバラバラのjavaとは違うのだよ
(その分winに偏ってるのは認める)


438 :デフォルトの名無しさん:2011/07/16(土) 22:52:19.33
このようなデリケートな話題についてセミナーの中での前後関係を無視して140文字でつぶやくことは、あまりにも無責任という事です。
特にTwitterは、非常に気軽に書く事ができます。おまけに前後関係がまったく無視された一部が次々と拡散されていく性質を持っています。
震災の時なども数多くの「デマ」が飛び交っていましたが、そのような危険性のあるメディアであるということです。
また、ITやウェブになれていない人であればともかく、ITの勉強会に出席するような有識者が行う行為ではないと思います。
さらに、このようなTweetをされ、問題となってしまうと、講師の人も下手な事を言えない状況となります。

札幌のWebエンジニアの綴る日常と開発の日々。
http://d.hatena.ne.jp/shuji_w6e/20110715/1310708151

439 :デフォルトの名無しさん:2011/07/16(土) 22:53:41.51
>>438
元々SunにいたSwing関連の強力なプログラマ、スターエンジニア達は、JavaFXやりますよ、といった途端に一斉に退職して、今はGoogleにいてAndroidを作ってると。なるほどw #sjc11

2011-07-09 17:51:42 via Twitter for Mac

まず、このツイートのなにが問題であるかという点ですが、「(Oracleによる)JavaFX(2.0)の方針がSwing関係のエンジニアの流出の原因」としている点です。

440 :デフォルトの名無しさん:2011/07/16(土) 23:05:51.71
>>436
結局

iOS=Objective C
Android = java
Windows Phone/xbox360 = C#


と、それぞれ囲い込んでる訳だし、それぞれ覚えるしかない訳だが。。。
何が言いたいんだ?
androidでしか開発しません宣言か?


441 :デフォルトの名無しさん:2011/07/16(土) 23:11:09.40
>>437
いわゆるジャバラーという人種のうちでwindowsのようなちゃんとしたGUIを設計してそれを作れる人は一人もいませんよ。
なので勉強会に忙しいジャバラーにはswingとかjavafxなんか実際まったく眼中ないです。

442 :デフォルトの名無しさん:2011/07/16(土) 23:24:52.40
>>437
EclipseならindigoからWindowBuilderがあるし前からプラグインで優秀なGUIビルダはあったしnetbeansはもとからまともなGUIビルダあったし
コンパイラは最適化の方針の違いでしか無いし実質、sun javacかejcの二択でしかないしeclipse搭載のejcはsun javacと違いなんて無い様なもんだし
いまどきjavaのIDEがどうだのGUIビルダがどうだのとかただの情弱でしか無いだろ。
monoは評価できるが.netとかJ++引きずって囲い込みしたいだけじゃん。

443 :デフォルトの名無しさん:2011/07/16(土) 23:27:44.68
>>441
いや、流石に元ジャヴァラーで現在C#メインの自分でもGUIはマトモに書けるw
ただ、C#使った後だとjavaが面倒臭くなっただけだw



444 :デフォルトの名無しさん:2011/07/16(土) 23:36:20.78
>>442
情弱上等
楽にプログラミングしたいだけなのに、あれこれ探して疲れるのはごめんだ

ググるのはコードだけにさせてくれよ


445 :デフォルトの名無しさん:2011/07/17(日) 00:03:49.23
C#は何がしたいのかよくわからんから相手にしない
IIS、SQLServer、C# で.netに揃えればMSサポートが効いて
業務システムとしては安心かもしれないところぐらいかな、利点は。



446 :デフォルトの名無しさん:2011/07/17(日) 02:11:40.72
結局のところ何使ったらいいの?

447 :デフォルトの名無しさん:2011/07/17(日) 02:35:38.47
用途で選ぶ

448 :デフォルトの名無しさん:2011/07/17(日) 02:36:58.95
>>446
何に?

449 :デフォルトの名無しさん:2011/07/17(日) 02:56:29.63
>>437
エクリプスでとことん苦労したんですね
お察しします・・・

450 :デフォルトの名無しさん:2011/07/17(日) 03:06:39.27
>>442
現在は2011年7月でもうすぐジャバ7がリリースされるころなのですが、いつまでも過去のサンの栄光にすがってばかりの典型的な「情弱」はあなたの方だと思いますよ。

451 :デフォルトの名無しさん:2011/07/17(日) 04:36:20.16
Eclipseが糞重いからAnt+プレーンなテキストエディタつかってるが
やぱーりctrl+spaceでメソッド名でてくるのがほしいっす。

いらねー機能満載の変なIDEじゃなくて
軽快でバランス良くて使いやすいIDE誰も作らないの?

452 :デフォルトの名無しさん:2011/07/17(日) 05:10:52.57
おまえが作れ

453 :デフォルトの名無しさん:2011/07/17(日) 09:49:27.67
getCountry()
ロケールの国/地域コードを返します。

getDisplayCountry(Locale inLocale)
ユーザーへの表示に適した、ロケールの国の名前を返します。

Localeクラスだけどこの違いは何?

454 :デフォルトの名無しさん:2011/07/17(日) 09:49:49.92
>>432
そんなことどうでも
金くれ

455 :デフォルトの名無しさん:2011/07/17(日) 10:12:41.90
>>453
getCountry()はドキュメント読めば ISO 3166の2文字のコードって書いてあるぞ。
System.out.println(Locale.JAPAN.getCountry()); //JP
System.out.println(Locale.US.getCountry()); //US

getDisplayCountry(Locale inLonale) は inLocaleで指定した言語で一般的な表記に翻訳する。
System.out.println(Locale.US.getDisplayCountry(Locale.JAPANESE)); //アメリカ合衆国
System.out.println(Locale.US.getDisplayCountry(Locale.ENGLISH)); //United States

456 :デフォルトの名無しさん:2011/07/17(日) 10:57:08.19
>>442
>>EclipseならindigoからWindowBuilderがあるし

どこにあるの?

457 :デフォルトの名無しさん:2011/07/17(日) 11:13:24.34
>>455
ありがとう

458 :デフォルトの名無しさん:2011/07/17(日) 12:39:15.00
>>456
http://eclipsesource.com/blogs/2011/06/21/window-builder-top-indigo-feature-2/

459 :デフォルトの名無しさん:2011/07/17(日) 15:39:28.98
素朴な疑問なのですが、

Sample sample = null;

とした時、変数 sample は型の情報だけ持っているという解釈で合っていますでしょうか

460 :デフォルトの名無しさん:2011/07/17(日) 16:09:16.72
「型の情報だけ持っている」じゃどんな解釈なのかわからん。
持っているものと持っていないもの列挙してみ?

461 :459:2011/07/17(日) 16:28:34.51
>>460
レスありがとうございます。

■持っているもの
・変数としての名前
・型

■持っていないもの
・メモリ上のアドレス

くらいしかわからなくて……

462 :デフォルトの名無しさん:2011/07/17(日) 20:35:01.79
>>459
いや。型の情報も持っていない。

463 :デフォルトの名無しさん:2011/07/17(日) 20:50:13.22
>>459
ローカル変数の話だよね?
VM的にはどこかのスロットにnullオブジェクト参照が入っているだけ。
nullオブジェクトはnull型にしかなれない。

instanceof演算子にsampleを渡しても、必ず偽が返る。

464 :デフォルトの名無しさん:2011/07/17(日) 21:32:35.23
>>462-463
ありがとうございます。
ネットの解説サイトにも書いてありましたが、null は null 型なんですね。
勉強になりました

465 :デフォルトの名無しさん:2011/07/17(日) 21:34:14.40
コンパイル時の型情報じゃね?
実行時には変数名だって削られるわけで。

466 :デフォルトの名無しさん:2011/07/17(日) 21:50:46.18
コンパイル時の情報は、何が代入されるかで変わったりしないと思うから、
= null; とした時だけを特に語るのはやっぱり変じゃね

467 :デフォルトの名無しさん:2011/07/17(日) 22:46:34.36
「変数としての名前」だって何が代入されるかで変わったりしないでしょ。

468 :デフォルトの名無しさん:2011/07/18(月) 00:01:50.42
JpanelからAppletにするにはどうしたらいいのでしょうか?

469 :デフォルトの名無しさん:2011/07/18(月) 03:18:41.85
JAppletをJFrameだと思って普通にJPanelを突っ込めばいいよ

470 :デフォルトの名無しさん:2011/07/18(月) 05:50:43.30
ListのtoArray(T [])の使い方についてですが
いつもListのsize()とジャストサイズのT[]の配列を取得する目的で使用しています.
そのために例えばList<Integer>のlistに対して
Integer[] array = list.toArray(new Integer[]{});
というふうに使っているのですが,こういう使い方は一般的でしょうか?

471 :デフォルトの名無しさん:2011/07/18(月) 05:53:51.94
そのためのメソッドですがなにか

472 :デフォルトの名無しさん:2011/07/18(月) 07:07:18.87
システムの現在時刻を取得する方法について質問させてください。

方法としては以下の 2 つがあると思いますが、
この 2 つのうちのどちらを用いるのがベターなのかがいまいちわかりません。

@ System.out.println(new Date());
A System.out.println(Calendar.getInstance().getTime());

もし、システムの現在時刻を取得する「メソッド」を作成するとしたら
static メソッドを使用しているAの方が良いのかな? となんとなく思っています。

考えがまとまっていなくて申し訳ございません。
コメントいただけると嬉しいです。よろしくお願いします

473 :デフォルトの名無しさん:2011/07/18(月) 07:12:28.34
連投申し訳ないです。
「static メソッドを使用しているAの方が良いのかな?」ってのは変ですね。

システムの現在時刻を取得する「メソッド」を作成するだけが目的だったら
どちらを使っても違いはないのでしょうか

474 :デフォルトの名無しさん:2011/07/18(月) 07:22:29.86
CalendarはDateの入れ物みたいなものなので結局のところ内部でnew Date()みたいなことをしている.
後者の方法だと内部で作ったDateのオブジェクトを取り出してるだけだから
前者で事足りるなら前者の方がいいと思います

staticメソッドを使っているように見えても単にstaticの中でCalendarのオブジェクトを作っているだけ

475 :デフォルトの名無しさん:2011/07/18(月) 08:11:04.91
>>474
丁寧なご説明ありがとうございます。
一応 Calendar の getInstance メソッドの処理の流れを追っかけてみましたが
結構複雑ですね……。

Calendar オブジェクトは特に使う必要がないので、new Date() を使おうと思います。
ありがとうございました

476 :デフォルトの名無しさん:2011/07/18(月) 09:47:36.57
度々申し訳ないのですが、
今度はデザインパターンのシングルトンパターンについて疑問が出てしまいました。

シングルトンパターンは、インスタンス生成を一度だけにしたいという制約から
考え出されたデザインパターンだと思いますが、
そもそもインスタンス生成などさせなくても、メソッドを全て public static にすれば良いのではないのでしょうか。

それとも、
「メソッドを全て public static にする方法でもいいけど、シングルトンパターンの方がベターだよ」
ということなのでしょうか。

何度も申し訳ないですがよろしくお願いします

477 :デフォルトの名無しさん:2011/07/18(月) 09:52:45.51
シングルトンだとDIできる
public staticだとできない

478 :デフォルトの名無しさん:2011/07/18(月) 10:01:02.64
>>476
引数やらセッターでシングルトンなインスタンス渡せるから取り回しがしやすい場合、
例えばデフォルト設定をシングルトンで、ユーザ設定は新しいインスタンス生成、
引数で切り替えるとかやりやすくなるケースは結構多い。

他にも環境依存のオブジェクトなんかは public static なメソッドで環境毎に if で分岐するよりいい場合
例えばUnixのファイル属性扱うオブジェクトとWindowsのファイル属性扱うオブジェクト、
別々の実装にしておいてシングルトンなインスタンスを環境毎に切り替えるってのも結構多い。

479 :デフォルトの名無しさん:2011/07/18(月) 10:04:16.25
>>477
DI ですかー。DI については以前少し勉強したものの理解が浅いので
勉強してきます。ありがとうございました!

480 :デフォルトの名無しさん:2011/07/18(月) 10:10:44.99
おまえさ、いい加減うざい
死ねよ

481 :デフォルトの名無しさん:2011/07/18(月) 10:13:46.57
>>478
レスありがとうございます。

> 例えばデフォルト設定をシングルトンで、ユーザ設定は新しいインスタンス生成、
> 引数で切り替えるとかやりやすくなるケースは結構多い。

コンストラクタを引数別に複数作って、
デフォルト設定のコンストラクタは private、ユーザ設定のコンストラクタは public にするという感じでしょうか。
なるほど。

> 他にも環境依存のオブジェクトなんかは public static なメソッドで環境毎に if で分岐するよりいい場合
> 例えばUnixのファイル属性扱うオブジェクトとWindowsのファイル属性扱うオブジェクト、
> 別々の実装にしておいてシングルトンなインスタンスを環境毎に切り替えるってのも結構多い。

呼び出し側に環境依存をあまり意識しなくて済むようにすることで
より良い実装につながりますよね(ポリモルフィズムだったかな)。

シングルトンパターンを採用することで色々なメリットがあるんですね。
勉強してきます。ありがとうございました

482 :デフォルトの名無しさん:2011/07/18(月) 10:18:04.68
>>480
不快な思いをさせて申し訳ないです。
java の初歩がわかるようになるまでこのスレに書き込むのはやめます

483 :デフォルトの名無しさん:2011/07/18(月) 10:27:14.68
どうでもいいけどコテ付けてくれない?
あぼーんするから

484 :デフォルトの名無しさん:2011/07/18(月) 10:32:54.15
FAQとかぐぐれべば十分なものをうだうだ書くの止めてくれる?
どうせ君は人に聞いてばかりで自分で何もしないゆとりなんだろうけ、この世界では問題は最終的には一人で解決をしていく孤独の世界だから、人と何か関わりながらでないとモチベが続かないなら君はこの世界に向いてないよ

485 :デフォルトの名無しさん:2011/07/18(月) 10:41:35.73
情報収集とかみんなの動向調査などと意気込んでバカの一つ覚えのように勉強会とそのプレゼンにすがってばかりいる奴に聞かせてやりたいな

486 :デフォルトの名無しさん:2011/07/18(月) 10:47:46.60
というか流れをみてると、得意気になって答えてる奴の方がよっぽどのマヌケ者なんだろうw

487 :デフォルトの名無しさん:2011/07/18(月) 10:57:36.56
>>482
死ねよ

488 :788:2011/07/18(月) 12:35:45.69
コテつけろとか騒いでるカスの方こそコテつけてくれ
あぼーんするから

489 :デフォルトの名無しさん:2011/07/18(月) 15:38:22.94
なんで突然夏が来たの?
しかもこいつ某所で死ね死ね言ってる携帯厨と同じなんだが。

490 :デフォルトの名無しさん:2011/07/18(月) 16:20:37.69
うんこと基地外は素手で触るべからず

491 :デフォルトの名無しさん:2011/07/18(月) 22:30:42.80
>>482
荒すなカス

492 :デフォルトの名無しさん:2011/07/18(月) 22:32:32.29

ゆとりの夏、金鳥の夏

493 :デフォルトの名無しさん:2011/07/18(月) 23:26:25.33
>>464
C++とは違うとこだね。

494 :デフォルトの名無しさん:2011/07/18(月) 23:51:47.22
>>491
人違い、してませんか?

495 :デフォルトの名無しさん:2011/07/18(月) 23:59:45.20
nullは「何も指さない」ことを表す特殊な参照の値だよ
便宜上null型と呼ぶこともあるというだけのことで、どこかにnullオブジェクトがあるわけじゃない
扱い自体はC++のnullポインタと別に違わない

496 :デフォルトの名無しさん:2011/07/19(火) 00:16:56.45
ゆとりってカスだなw

497 :デフォルトの名無しさん:2011/07/19(火) 00:58:26.74
DQNPG「ちょwwwこいつDateクラス使ってるよwww」

俺「は?何でDateクラス使っちゃいけないの?」

DQNPG「業務じゃDateクラスは使っちゃいけねえんだよw」

俺「だから、その理由は?」

こんな理由もまともに答えられないDQNPGがいる職場では働き炊くない。

498 :デフォルトの名無しさん:2011/07/19(火) 01:04:29.72
IT専門学校だといくら資格やスキルを付けたところで大体はそういうブラック系職場にしか就職できませんよ(本人にコネがない限り)

499 :デフォルトの名無しさん:2011/07/19(火) 02:25:41.40
むしろコネがあってもPGにはならん。

500 :デフォルトの名無しさん:2011/07/19(火) 02:37:41.77
カスPG「ちょwwwこいつDateクラス使ってるよwww」

ゆとり「は?何でDateクラス使っちゃいけないの?」

カスPG「業務じゃDateクラスは使っちゃいけねえんだよw」

ゆとり「だから、その理由は?」

これが日本ジャヴァラーの現実なのです

501 :デフォルトの名無しさん:2011/07/19(火) 02:39:42.47
このスレの住人ってすごいよな。
自分なんて学生時代から 2 時間悩んでわからなかった問題は人に聞くことにしてるよ。
だから現役では慶應と上智しか受からなかったんだと思う。

このスレの住人なら数学や物理、化学の難問も人に訊かずに解いて
東大なんか楽勝なんだろうな

502 :デフォルトの名無しさん:2011/07/19(火) 03:15:12.46
なんだこいつ突然w

503 :デフォルトの名無しさん:2011/07/19(火) 03:18:28.53
東大なんか楽勝とか言ってる時点で、おまえは大した能力もなく学歴以外に自慢できるものを何も持ってないのに高望みしすぎ。素直に諦めろ。

504 :デフォルトの名無しさん:2011/07/19(火) 03:21:27.40
>>432
どうでもいいから金くれ

505 :デフォルトの名無しさん:2011/07/19(火) 03:24:47.92
>>497
でも働かざるを得ないのがお前の力量を示している、と。

506 :デフォルトの名無しさん:2011/07/19(火) 03:29:31.77
コネさえあれば日本ではバカでもチョンでも独立行政法人ジャヴァ研究所(仮称)みたいな所にでも拾ってもらって将来安泰なんだけどな・・・

507 :デフォルトの名無しさん:2011/07/19(火) 03:47:34.50
>>501
東大乙

508 :デフォルトの名無しさん:2011/07/19(火) 04:03:04.77
>>495
class Sample{};
int main(){
Sample *sample = NULL;
std::cout << (typeid(*sample) == typeid(Sample)) << "\n";
std::cout << typeid(*sample).name() << "\n";
}


509 :デフォルトの名無しさん:2011/07/19(火) 04:40:27.24
典型的なゆとり野郎だな

510 :デフォルトの名無しさん:2011/07/19(火) 16:02:41.69
>>508
それnullも実行時の型も全く関係ないよ
class Sample{};class Sample2{};
int main(){ Sample *sample = new Sample();
std::cout << typeid(*(Sample2*)(void*)sample).name() << "\n"; }
試してみ
RTTIを使うならclass Sample{public:virtual void hoge(){}};とでもしとけば
typeidに*(Sample)NULLが渡った時点でbad_typeid例外が出る

511 :デフォルトの名無しさん:2011/07/19(火) 16:09:03.24
IT専門学校はマジでスキルもクソもないぞ
上位5%が基本情報とSJCP持ってますキリッなレベル

512 :デフォルトの名無しさん:2011/07/19(火) 17:29:43.37
WebProg板の方が適当かもしれませんが
Javaサーブレットに関するスレがなかったのでこちらで質問です。

ApacheのhtaccessのSetEnvIf Refererみたいな
リファラによるアクセス制限を
Tomcatのweb.xmlでする方法はありますか?

513 :デフォルトの名無しさん:2011/07/19(火) 17:32:59.97
filter書けばいいんじゃない?

514 :512:2011/07/19(火) 18:11:20.82
ありがとうございます
この手の要求は一般的だと思うので既存のフィルタがありそうな気がしますが
Apacheのcommonsとかにないんでしょうかね

515 :デフォルトの名無しさん:2011/07/19(火) 18:17:39.06
http://www.javaroad.jp/servletjsp/sj_servlet10.htm
ここ見れば10秒で書けると思うけどどうだろう

516 :デフォルトの名無しさん:2011/07/19(火) 18:39:05.44
>>510
> それnullも実行時の型も全く関係ないよ
>>493の説明を>>459のコードに合わせて書いたわけなので
正にその理解で正しいのだが。


517 :デフォルトの名無しさん:2011/07/19(火) 19:24:55.17
それがどうC++と違うことの説明になっているのか理解できない
C++のローカル変数には型情報があるがJavaには無いってこと?
typeid(*sample)は実行時に変数の情報を参照してるんじゃなくて
コンパイル時に結果(対象の型)が決まってるんで、
そりゃコンパイル時にコンパイラが型を認識してるのはJavaでもC++でも当たり前じゃないの
実行時の話でしょ?勘違いしてたらごめん

518 :512:2011/07/19(火) 19:36:19.89
>>515
ありがとうございます
パフォーマンスや柔軟性が考慮された既製品があればそれを使いたいところですが
ないのなら自分で作るしかないですね

519 :デフォルトの名無しさん:2011/07/19(火) 19:53:12.95
>>517
> それがどうC++と違うことの説明になっているのか理解できない
Javaで同じコード書いてみりゃいいじゃん

520 :デフォルトの名無しさん:2011/07/19(火) 19:58:58.24
いやJavaにはローカル変数の型情報を直接取得する方法が無いのはわかってるよ。
でもそれって単にコンパイル時の問題でしょ。
Java言語に同じ機能を追加するのにJVMの変更はいらない。
もともとのnullがどうのっていうのは実行時の型情報の話じゃないの?

521 :デフォルトの名無しさん:2011/07/20(水) 02:46:38.68
>>482
死ねよゆとり

522 :デフォルトの名無しさん:2011/07/20(水) 02:56:10.94
>>511

>>496-501

523 :デフォルトの名無しさん:2011/07/20(水) 11:07:30.22
バイトコードベリファイアはローカル変数の型を追跡できるんだっけ?
プリミティブ型だけ?

ベリファイヤが実行時の話に含まれるのかどうかは別として

524 :デフォルトの名無しさん:2011/07/20(水) 11:09:27.46
皆さん年齢は幾つですか??
リアルに教えてください!

525 :デフォルトの名無しさん:2011/07/20(水) 12:15:08.70
>>524
そういう時は、まずは自分から言わないか?


526 :デフォルトの名無しさん:2011/07/20(水) 12:26:26.70
19歳です。

527 :デフォルトの名無しさん:2011/07/20(水) 12:36:33.24
>>501

528 :デフォルトの名無しさん:2011/07/20(水) 12:52:45.48
なんか、病的な人がいるね・・

529 :デフォルトの名無しさん:2011/07/20(水) 13:29:26.99
>>528
自己紹介乙

530 :デフォルトの名無しさん:2011/07/20(水) 13:34:53.56
>>525
糞ゆとりが夏休みに入ったんだろ
相手にするな

531 :デフォルトの名無しさん:2011/07/20(水) 13:41:54.86
struts2-blank.warについて教えてください。

とりあえずインポートしました。
で、HelloWorldのexecute()メソッドに
System.out.println("test");
を入れてみたんですが、コンソールに表示されません。

なぜでしょうか?execute()が呼び出されていないのでしょうか?

532 :デフォルトの名無しさん:2011/07/20(水) 13:57:01.64
>>531
ブラウザからどんなURLを送ったの?

533 :デフォルトの名無しさん:2011/07/20(水) 14:06:53.03
>>524,526
荒すな

534 :デフォルトの名無しさん:2011/07/20(水) 14:08:59.57
>>523
どっちかっつーと、プリミティブ型の int short char byte あたりは区別されなかった記憶が。
LocalVariableTable_attribute がついてりゃ一発だけど、ついてる保証ないし。

535 :デフォルトの名無しさん:2011/07/20(水) 14:15:08.69
>>532
/example/HelloWorld.action
です。

536 :デフォルトの名無しさん:2011/07/20(水) 14:54:48.53
わかりました。warをインポートした状態ですと
javaファイルをいくら変更してもtomcatに反映されませんでしたが
javaファイルをsrcフォルダの下に移動させたら反映されました。

537 :デフォルトの名無しさん:2011/07/20(水) 17:12:49.47
年齢は、25っす!

538 :デフォルトの名無しさん:2011/07/20(水) 17:24:31.16
>>524-526
今月30歳になりますた



539 :デフォルトの名無しさん:2011/07/20(水) 17:47:46.11
30歳とかオワコン

540 :デフォルトの名無しさん:2011/07/20(水) 17:50:08.34
年金生活です

541 :デフォルトの名無しさん:2011/07/20(水) 19:18:52.86
死んだ母親の年金で生活しています。

542 :デフォルトの名無しさん:2011/07/20(水) 20:47:49.36
>>541
まあ、母親は死んだが、ちゃんと働いてるぞ


543 :デフォルトの名無しさん:2011/07/20(水) 23:00:06.84
数値計算スレが過疎ってるのでこちらに書かせてもらいます.

何らかの微分方程式を4次のルンゲクッタを使ってt→0方向に解きたい場合,
どのようなことをすれば良いでしょうか?
抽象的すぎるかもしれません.コメントをください.

544 :デフォルトの名無しさん:2011/07/20(水) 23:10:10.36
C言語の数値計算の本を探します。ルンゲクッタなんてどの本にも載っています。
Javaとほとんど変わらないのでJavaに読み替えましょう。
アルゴリズム自体についてはスレ違いです。

545 :デフォルトの名無しさん:2011/07/20(水) 23:10:27.93
このスレは高卒か専門卒のドカタコーダーしかいないからそういう質問は答えられませんよ

546 :デフォルトの名無しさん:2011/07/20(水) 23:17:41.81
!ninja

547 :デフォルトの名無しさん:2011/07/21(木) 01:20:06.52
そうですか.コメントしてくださった方ありがとうございます.

548 :デフォルトの名無しさん:2011/07/21(木) 01:42:33.48
Javaで以下のようなものが有るか教えてください。

Androidの
 Activity.runOnUiThread
 Toast
上記2つと同じ様な物を探しています。

御存知の方よろしくお願いします。


549 :デフォルトの名無しさん:2011/07/21(木) 02:01:15.30
SEにはrunOnUiThreadはないけどAsyncTaskがまんまjava.util.concurrent。
ちなみにMEにはある。

550 :デフォルトの名無しさん:2011/07/21(木) 03:50:29.51
>>548
Android知らないので名前でエスパーするよ
http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/SwingUtilities.html#invokeLater(java.lang.Runnable)
http://java.sun.com/javase/ja/6/docs/ja/api/java/awt/TrayIcon.html#displayMessage(java.lang.String, java.lang.String, java.awt.TrayIcon.MessageType)

551 :デフォルトの名無しさん:2011/07/21(木) 16:00:37.63
どうしてstatic初期化ブロックはコンストラクタより後に実行されるのですか?

552 :デフォルトの名無しさん:2011/07/21(木) 16:57:35.56
>>551
staticイニシャライザの方が先に実行されるが。

553 :デフォルトの名無しさん:2011/07/21(木) 17:13:21.10
>>551
http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.4.1

> A class or interface type T will be initialized immediately before the first occurrence of any one of the following:
>
>   T is a class and an instance of T is created.

static初期化子の方がコンストラクタより後に実行されるようなら言語規定に反してる。
もし勘違いでないならBugDatabaseに送るといいよ。

554 :デフォルトの名無しさん:2011/07/21(木) 17:30:33.32
そもそもコンストラクトしなくてもstatic initializerは実行されるよ

555 :デフォルトの名無しさん:2011/07/21(木) 17:48:18.39
仮にインスタンス生成してないのにstatic initializer呼ばれた場合でもコンストラクタより後って事はない。

556 :デフォルトの名無しさん:2011/07/21(木) 18:20:01.55
>>551
とにかくコードをよこせ

557 :デフォルトの名無しさん:2011/07/21(木) 19:31:50.87
>>551
何を見てそう判断したの?

558 :デフォルトの名無しさん:2011/07/21(木) 20:31:03.52
try の中で return して強制的に finally に飛ばすのは邪道ですか?

559 :デフォルトの名無しさん:2011/07/21(木) 20:51:24.08
言語仕様で明記されてるしtry-catch-finallyが使える(知る限り)すべての
言語は同じような実装だから邪ではないと思う、

560 :デフォルトの名無しさん:2011/07/21(木) 20:51:28.42
>>552-557
あれ?だよね?
オレもそう思ってたんだけど
あれ?試しにSunJVM上で簡単に書いてみたらstaticの方が先だった。
そのつもりでいてAndroidライブラリプロジェクト中のクラスを実行したら
コンストラクタの方が先だったんでパニクった。
単純なクラスを書いて同じように実行したらstaticが先になった。

そうか、バグなのか。
詳しく調べてみる。
ありがトン

561 :デフォルトの名無しさん:2011/07/21(木) 20:52:05.40
finally で unlock() とか close() するなら邪道でもなんでもないが。

562 :551:2011/07/21(木) 20:58:35.80
わかったorz
シングルトンにしてるんだが
staticなインスタンスの生成がstaticイニシャライザより上に書いてあった・・
当然だよなorz

563 :デフォルトの名無しさん:2011/07/21(木) 21:00:55.13
staticの順序って完全に保証されてたっけ?

564 :デフォルトの名無しさん:2011/07/21(木) 21:05:53.05
されてるけどあんまりそれに依存したコードもどうかと
少なくともそのクラスを使う前には呼び出されている、くらいの前提で作ったほうが分かりやすいと思う

565 :デフォルトの名無しさん:2011/07/21(木) 21:35:19.81
bashのシェルについて聞いてもいいでしょうか

566 :デフォルトの名無しさん:2011/07/21(木) 21:48:55.03
>>551
あるクラスCCCのstaticメソッドを呼ぼうとしたら、
派生元BBBのstaticイニシャライザが起動し、
そのイニシャライザからCCCのコンストラクタが呼ばれたとか。

こーゆーばあいCCCのstaticイニシャライザはまだ呼ばれていないと思う。

こーゆーばかな設計はたぶんFindBugsとかで検出してくれるはず。


同じクラスなのにassertオンオフの設定が違うとか、昔あったよ…
(staticイニシャライザが終わるまでそのクラスのassertはオン)

567 :デフォルトの名無しさん:2011/07/21(木) 21:54:58.29
間違い。
「staticイニシャライザが始まるまでそのクラスのassertはオン」
だ。

568 :デフォルトの名無しさん:2011/07/21(木) 22:28:20.15
>>565
そりゃ、駄目だろwww

569 :デフォルトの名無しさん:2011/07/22(金) 11:32:25.53
>>565
なぜ聞こうと思った?w

570 :デフォルトの名無しさん:2011/07/22(金) 18:05:41.51
Javaは変数名などに漢字など使えますが、
実際のところそういうアルファベット以外を使うことってあるんでしょうか?

基本はアルファベットのみだと思いますが,
例えば仕事によっては色々な固有名称があってそういう単語をいちいち英語やローマ字に直して
クラスやメソッド名にしたりするのは,数が大量になってくると煩雑になって可読性も低くなると思います

するともうその漢字などをそのまま使ったほうが楽なんじゃないかと思えるんですが・・・

571 :デフォルトの名無しさん:2011/07/22(金) 18:12:30.12
Eclipseが表示してくれるから漢字で書く必要ないよ

572 :デフォルトの名無しさん:2011/07/22(金) 18:18:17.70
>>565
はじめてJavaの噂を聞いたときは、
「これでSolarisのbashやgrepとかが全部Javaで書き直されるんだなぁ」
と期待したものだが…

573 :デフォルトの名無しさん:2011/07/22(金) 18:38:37.96
Jash
UnJash


574 :デフォルトの名無しさん:2011/07/22(金) 19:36:47.38
>>570
まぁ、やってみたらいいよ。
実際のソース書いてみたらわかるから。

VBで似たような拷問を受けた事がある。

575 :デフォルトの名無しさん:2011/07/22(金) 21:22:16.56
キーに対して、値を複数持つためのクラスはありませんか?
イメージとしては、DBのテーブルみたいな感じです。

Table t = new Table();
t.addColumn("EmpNo", Integer);
t.addColumn("Name", String);
t.addColumn("Age", Integer);
t.addRow(1, "sasaki", 20);
t.addRow(2, "tanaka", 31);

TableRow tr = t.get("EmpNo", 1);
System.out.println(tr.get("Name"))

■結果
sasaki

576 :デフォルトの名無しさん:2011/07/22(金) 21:25:04.20
お前のイメージするDBのテーブルがよくわからない

577 :デフォルトの名無しさん:2011/07/22(金) 21:25:54.83
クラス作ってHashtableに突っ込め

578 :デフォルトの名無しさん:2011/07/22(金) 22:51:00.66
Class#isInstance(Object) と Class#isAssignableFrom(Class) には何か違いがあるのですか?

579 : 忍法帖【Lv=11,xxxPT】 :2011/07/22(金) 23:01:46.34
まず名前が違う

580 :578:2011/07/22(金) 23:07:04.94
そうですね名前が違いますね。引数も違います。それ以外には?

581 :デフォルトの名無しさん:2011/07/22(金) 23:15:20.07
Class#isInstance(Object) は型を調べたい対象のオブジェクトが実際に存在していなければ使えない
例えばインタフェイス型同士の関係を調べることはできない
しかしinstanceof演算子同様にnullを渡しても平気

582 :デフォルトの名無しさん:2011/07/22(金) 23:17:51.03
isAssignableFromはプリミティブ型の恒等変換までならカバーしてる。
ただしプリミティブ型の拡大変換に対応してないので看板に偽りアリな感じ。

583 :578:2011/07/23(土) 01:46:47.73
>>581
なるほど。オブジェクトを渡す分少し制限がありますね。

>>582
とりあえず、プリミティブ型が判定できる分isInstanceより高機能ですね。

ありがとうございます。

584 :デフォルトの名無しさん:2011/07/23(土) 03:34:05.96
>>572
実際にマークアンドリーセンがNCをjavaで書きなおしたけどあとブラウザのGUIのみって段階になってプロジェクト破棄されたよ。
その生き残りがmozilla Rhinoだよ。
むかしはJava Mail使ったメールコンポーネントもあったけどmozillaがインターネットスイートからブラウザ単体に方向転換したときに消えた。
Rhinoが未だにメンテされてていくつも採用実績(ほとんどは海外の社内ツールのスクリプト)があること考えるとjavaへの置き換えも一部分野ではありなんじゃない?

585 :デフォルトの名無しさん:2011/07/23(土) 13:01:53.88
改訂版 Java言語プログラミングレッスン下 P170にあるプログラムから質問です。
stopRunningとrunはそれぞれ別のスレッドから呼ばれることを想定しているようです。
このプログラムではロックもvolatileも使っていないのに
runningは可視になるのですか?

class Runner extends Thread {
private boolean running = true;

public void stopRunning() {
running = false;
}

public void run() {
while (running) {
doCommand();
}
}

}

宜しくお願いします。

586 :デフォルトの名無しさん:2011/07/23(土) 13:31:14.05
>>585
「必ず不可視になる」わけじゃないから。

たぶんテストした時は意図通りに(もしくはstopRunning()してから
doCommand()の停止までの時間が許容範囲内で)動いちゃったんじゃね?

587 :デフォルトの名無しさん:2011/07/23(土) 13:31:36.93
なりません

588 :デフォルトの名無しさん:2011/07/23(土) 13:33:59.87
>>585
どういう意味で可視という用語を使っているのか分からないけど、
確かにvolatile使うべき状況だよね。

589 :デフォルトの名無しさん:2011/07/23(土) 13:41:59.38
doCommandがインライン展開されたりしなければ大丈夫じゃね
保証はまったく無いけど

590 :デフォルトの名無しさん:2011/07/23(土) 14:00:36.01
if (object.getClass().isArray()) {
  Object[] array = (Object[]) object;
}
こういう処理がしたいのですが、プリミティブ型の配列だと Object[] にキャストできません。

型を判定してint[], char[], boolean[]などにキャストしてやればいいのですが、
型を気にせずプリミティブ型の配列をひとまとめに扱う方法はないでしょうか?

591 :デフォルトの名無しさん:2011/07/23(土) 14:01:56.87
キャストしないで java.lang.reflect.Array クラスのメソッド使ってゴリゴリアクセスしる。

592 :590:2011/07/23(土) 14:08:53.90
>>591
これは便利。プリミティブでも使えました。
ありがとうございます。

593 :585:2011/07/23(土) 14:27:43.06
みなさん、ありがとうございました。
大変参考になりました。

ちなみに、可視とは、あるスレッドがrunningを変更した際に、
別のスレッドがその変更を把握することができるかどうかという意味で使いました。

594 :デフォルトの名無しさん:2011/07/23(土) 15:13:32.92
doCommand() メソッド内で、piggybacking が起こってれば可視が保証されるかもしれない

595 :デフォルトの名無しさん:2011/07/23(土) 15:15:06.89
それは保証とは言わない。

596 :デフォルトの名無しさん:2011/07/23(土) 17:05:50.37
で、結局volatileつけないとなにがやばいの?

597 :デフォルトの名無しさん:2011/07/23(土) 17:11:41.82
自演乙

598 :デフォルトの名無しさん:2011/07/23(土) 17:38:10.12
無限ループするんじゃないの

599 :デフォルトの名無しさん:2011/07/23(土) 17:42:09.38
stopRunning()した後doCommand()は一回は実行されるかもしれないけど
次のループでは確実に抜けるんじゃないのか?

600 :デフォルトの名無しさん:2011/07/23(土) 17:50:04.72
>>599
よし、volatileについてググるんだ。

601 :デフォルトの名無しさん:2011/07/23(土) 18:00:21.16
599だけど、まさに上みたいなテキストのコードを鵜呑みにしてたから疑問を抱いていなかったよ
volatileなんて組み込みぐらいでしか使わないと思ってた

602 :デフォルトの名無しさん:2011/07/24(日) 02:30:28.46
整数同士の割り算をしたとき、割り切れれば整数で、割り切れなければ小数で画面表示したいです
9 / 3 の結果を、3.0ではなく3と表示したい
どのようにフォーマットすればいいでしょうか

603 :デフォルトの名無しさん:2011/07/24(日) 02:53:55.29
>>602
String form = (9 % 3 == 0) ? "%.0f" : "%f";
System.out.printf(form, 9d / 3);


604 :デフォルトの名無しさん:2011/07/24(日) 03:36:16.48
+=ってどおゆう意味?例えば、a+=bとか。

605 :デフォルトの名無しさん:2011/07/24(日) 04:24:42.24
>>604
a += b; ← a = a + b;

public static main(String[] args){
System.out.print("Enterかその他のキーを入力せよ>");
というプログラムで2通りの処理をさせたいです。

どこかのサイトを参考に、
class KeyInput extends KeyAdapter {
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() == KeyEvent.VK_ENTER) {
処理1;
} else {
処理2;
みたいなクラスを作ってみましたが、使い方がわかってません。
よろしくお願いします。

606 :デフォルトの名無しさん:2011/07/24(日) 12:36:41.78
>>605
拾いたいコンポーネントのaddKeyListenerを呼んで作ったリスナーを追加しておく。
frame.addKeyListener(new KeyInput());

けど単にSystem.in.read()の結果で判定したいだけのような気もする。

607 :デフォルトの名無しさん:2011/07/24(日) 16:18:00.48
jsファイルにてIEを外部操作し単調な作業をマクロ化しようとしています。

<select name="substatus[]" multiple size="17" id="select_substatus" class="">
<option value="" selected>指定しない</option>
<option value="-2">バナナ</option>
<option value="-1">リンゴ</option>
<option value="0">ゴリラ</option>
<option value="1">ラッシー</option>
</select>

jsファイル側

ie.document.getElementById("select_substatus").value="11"、"12";

この方法でHTML側のチェックボックスに値を送ると、12の値のみ送られてしまい11は上書きされてしまいました。
チェックボックスを複数選択するようにする為にはどのような手法を取ればよいのでしょうか。
よろしくお願いします。

608 :デフォルトの名無しさん:2011/07/24(日) 16:35:58.08
11と12に何の関係があるのかわからん、selectのoptions[n]をselected=trueにすれば複数選択できる

609 :デフォルトの名無しさん:2011/07/24(日) 16:55:03.97
実際はvalue100ぐらいまであるので見本は途中で切りました。
js側の記述はそのまま転載しちゃったんで分かりづらかったですね。

HTML側のソースをいじらないで達成する事は出来そうにないでしょうか。
HTML側は社内システムのソースなので、可能であればjs側のみで対処したいのですが…。

610 :デフォルトの名無しさん:2011/07/24(日) 16:57:57.48
select_substatusの子要素のoptionを拾ってきてひとつひとつvalueを調べながら
>>608のいうようにselected=true設定すればいけるだろう。

611 :デフォルトの名無しさん:2011/07/24(日) 17:13:51.51
今朝から思い立って勉強しはじめたので要領が悪くすみません。

>>608さんの方法で無事動作を確認しました。
>>610さんの補足があったおかげで意味が分かりました。
お二人様ともありがとうございます。

転載するようなレベルのものではないかもしれませんが

var subs = ie.document.getElementById("select_substatus").options;
subs[10].selected=true;
subs[11].selected=true;

上記の方法で動作確認しました。ありがとうございました。

612 :デフォルトの名無しさん:2011/07/24(日) 17:23:56.14
>>607
スレ違い

613 :デフォルトの名無しさん:2011/07/24(日) 17:24:52.94
>>612

ごめんね

614 :605:2011/07/24(日) 18:58:41.77
>>606
ありがとうございます。
System.in.read()で考えてみましたが、
int c = System.in.read(); if ( c == 10 ) {処理
の場合、エンターキー(10)が読み取られないのと、他のキーを押した場合も、決定にエンターを待ってしまいます。

615 :デフォルトの名無しさん:2011/07/24(日) 20:24:14.65
JCurses使うとか

616 :デフォルトの名無しさん:2011/07/25(月) 08:26:37.23
なんでjavaのBooleanって1bitじゃないの?
1bitずつのデータが欲しい時は、ちまちまビット演算しろってこと?

617 :デフォルトの名無しさん:2011/07/25(月) 08:49:42.55
省サイズなbooleanの配列の代用品ならjava.util.BitSet

618 :デフォルトの名無しさん:2011/07/25(月) 09:41:57.63
>>617
なるほど。ありがとうございます。

ついでなんですが、高速な入出力方法ってどうすればいいんでしょうか?
数字とかが欲しい場合、scannerとかを使うより1byteずつ読み込んでいって自分でパースしたほうがいいんですかね?

619 :デフォルトの名無しさん:2011/07/25(月) 09:45:21.43
あのさ、ファイルからある長さの文字列を読み込むのにかかる時間と、
その文字列を解析して数字に変換するのにかかる時間の比ってどれくらいか想像できる?
解析の方をどれだけ高速化したところではっきり言って全く変わらん

620 :619:2011/07/25(月) 10:19:02.37
でも状況によるか
自分で文字列を区切ってInteger.parseIntとかすればだいぶ速くなると思う
自分で解析しても部分文字列を作る手間が省けるくらいでそれほど変わらないはず

621 :デフォルトの名無しさん:2011/07/25(月) 12:24:15.41
>>620
その方法とか、いろいろと試して早い方法を取ろうと思います。
ありがとうございました。

622 :デフォルトの名無しさん:2011/07/25(月) 13:19:15.37
>>616
他の言語だと1bitなんですか?

623 :616:2011/07/25(月) 13:32:23.03
>>622
普段よく使うのがC++なのですが、そちらの処理系(g++,vc++)だと
boolが1bitになってます。

まぁ、配列として確保しないと、メモリ上では区切りのいいブロック単位でサイズ確保されちゃうのかもしれないですけど。
wikipediaを見ると、1bitで確保すると名言している言語はあまりない雰囲気ですね。
そこらへんが多少疑問なところです

624 :デフォルトの名無しさん:2011/07/25(月) 14:11:27.28
Eclipse使って
public static void main(String[] args) throws Exception  内で

Font font = Font.createFont(Font.TRUETYPE_FONT, new File(P("C:\\Users\\koide\\Desktop", "msgothic.ttc")));

と書くと
Exception in thread "main" java.io.IOException: Can't read msgothic.ttc
at java.awt.Font.createFont(Unknown Source)
at hoge.hoge.com.TEST.main(TEST.java:34)

と言われてしまいます何が問題なのかご教授願えないでしょうか?

625 :デフォルトの名無しさん:2011/07/25(月) 14:52:52.30
>>623
sizeof(bool)が1bitってことはなかんべ。
http://codepad.org/tPTZxace

ただし、 vector<bool> は別の話。

626 :デフォルトの名無しさん:2011/07/25(月) 18:57:52.74
つーかC++の最小単位はsizeof(char)っしょ。如何にboolでもこれより小さくなることは有り得ん。

>>625
EnumSetは(Setとは)別の話、みたいなもん?

627 :デフォルトの名無しさん:2011/07/25(月) 19:09:15.90
>>624
やあ小出っち。

うちでは問題なく動いたけど?msgothic.ttcのパスをもう一度確認してみては。
P(String)ってのは自作メソッド?

628 :デフォルトの名無しさん:2011/07/25(月) 23:00:11.99
どの言語だろうと結局8bit単位で収められてるともうんだがC系でboolが1bitはないだろ。ネイティブな言語だとCPUに合わせて吐くんだから。

629 :デフォルトの名無しさん:2011/07/25(月) 23:05:24.88
ドラッグアンドドロップでテキス トデータかなんかを
実行ファイル形式のjarファイルに
読み込ませることはできますか?
コマンドラインでファイルを指定 して読み込ませるclassはできてい ます。
それを普通にjarして作ってもPythonみたいにはできないのかな?
まったく検討違いなこと聞いてたらすみません。


630 :デフォルトの名無しさん:2011/07/26(火) 00:42:45.33
標準入力で↓のようにしましたが、
入力すると変数に文字化けした文字が入っています。
開発環境win、eclipse
デフォルト文字コードはUTF-8のようです

BufferedReader r =
new BufferedReader(new InputStreamReader(System.in), 1);      System.out.println("まずあなたの名前を入力してください");
 System.out.flush();
 String myName = r.readLine();

631 :デフォルトの名無しさん:2011/07/26(火) 01:00:46.72
↑の者ですが自己解決しました。
スレ消費してスマン

632 :デフォルトの名無しさん:2011/07/26(火) 11:59:34.30
アプレットでボタンの上にマウスカーソルがのったときに
ボタンの表示を変える方法を教えて下さい。

mouseEnteredメソッドを使用して書いてみたのですが、ボタンに乗った時ではなく
アプレット上に乗ったときに変わってしまいます・・

633 :デフォルトの名無しさん:2011/07/26(火) 12:00:35.48
質問です
初心者の勉強用のお勧め本を教えてください

634 :デフォルトの名無しさん:2011/07/26(火) 12:06:40.67
独習Java

635 :632:2011/07/26(火) 12:15:32.92
632ですが自己解決しました

636 :デフォルトの名無しさん:2011/07/26(火) 14:39:24.08
すいません。
Swingの勉強をしているのですが、JFrameの枠だけを非表示にする方法はありますか?つまり、画像だけ表示したい訳です。

637 :デフォルトの名無しさん:2011/07/26(火) 15:05:10.70
636ですが、調べ方が悪かったみたいです。
setUndecorated(true);
でできました。ほんとすいません。

638 :デフォルトの名無しさん:2011/07/26(火) 16:54:01.57
今自分がどのクラスにいるかは、
getClass().getName(); でわかりますが、
自分がどのメソッド名にいるかを知る方法はありますか?

リフレクションで、自分が今いるメソッド名 + "Exec" というメソッドを呼びたい、ということをしたいのですが・・・

639 :デフォルトの名無しさん:2011/07/26(火) 16:56:49.29
確実性ないけど、Thread#getStackTrace() あたりとか。

640 :638:2011/07/26(火) 17:40:33.52
>>639
レスどうもありがとうございます。
なるほど、StackTrace を見れば、得られそうですね。

ただ、今フレームワークもどきを作っているのですが、
この 「自分が今いるメソッド名 + "Exec"というメソッドを呼び出す」処理は
頻繁に呼ばれます。

そのたびに StackTrace を得るのはコスト的に問題ないでしょうか。

getStackTrace() は重い、とどこかで聞いたような・・・・

641 :デフォルトの名無しさん:2011/07/26(火) 19:36:12.14
>>640
頻繁とか重いとかじゃわかんねえよハゲ

なんなの?文系なの?
クリアしたい数字があんだろ?それを出せよゴミクズ

642 : ◆QZaw55cn4c :2011/07/26(火) 19:38:24.02
>>633, >>634
お勧めしない。肝心かなめのポリフォーリズム(interface, abstruct, 要するに、C++ でいうところの仮想関数)に関する記述が全くといって未熟。
たぶん著者は「わかっていない。」
こっちの方がいい。http://www.amazon.co.jp/dp/4797359277/
ハーバード・シルト先生はc++ や c# だけでなく、 java の教科書を書いたらよかったと思う。

643 :デフォルトの名無しさん:2011/07/26(火) 19:57:04.42
>>642
仮想関数のポインタをgetするにはどうすればいいんですか?

644 :デフォルトの名無しさん:2011/07/26(火) 20:29:36.16
>>643
1.7から追加されるMethodHandle

645 :デフォルトの名無しさん:2011/07/26(火) 20:39:26.37
どうやってつかうんですか?
オラクルにチュートリアルがないですよね

646 :デフォルトの名無しさん:2011/07/26(火) 20:52:23.38
一番最初に独習Javaやって勉強してたけど
その後他のオブジェクト指向導入の英語のJava本読まされたとき独習の糞さを知った

647 :デフォルトの名無しさん:2011/07/26(火) 21:05:52.83
ジャバラーは英語が出来る人が比較的に多い

648 :デフォルトの名無しさん:2011/07/26(火) 22:04:57.21
というか和訳が糞なことが多くていやでも原書を買い直すハメになる
鍛えられてくると翻訳本は最初からスルーするけどな

649 :デフォルトの名無しさん:2011/07/26(火) 22:43:46.86
>>645
javadocみりゃ使い方わかるでしょ

650 :デフォルトの名無しさん:2011/07/26(火) 23:00:05.22
>>648
javadocの訳からしてあまりにも酷いくらいだからなw
javaで誤訳とか糞翻訳はよくある。
javascriptなら言語仕様とサイ本読んどけって言えるんだけどjavaだとそういう本少ないよね。

651 :デフォルトの名無しさん:2011/07/27(水) 00:44:18.97
入門書として一冊「よくわかるJava」を読み終えたのですが、入門書の次に読むべき本にはどの様なものがあるでしょうか?
一応技術を身に付けてゲームでも作りたいなと考えているのですが

652 :デフォルトの名無しさん:2011/07/27(水) 01:23:15.64
Java言語仕様 第3版
Java仮想マシン仕様 第2版
Effective Java 第2版

653 :デフォルトの名無しさん:2011/07/27(水) 01:27:35.15
eclipseの使い方が載ってる雑誌やムックがいんじゃね。

654 :デフォルトの名無しさん:2011/07/27(水) 03:27:34.48
>>649
チュートリアルじゃねーし

655 :デフォルトの名無しさん:2011/07/27(水) 07:39:26.88
>>654
usage examples のところ見てもわからんならチュートリアル見ても無理だろ。

656 :デフォルトの名無しさん:2011/07/27(水) 07:49:49.07
質問お願いします。
プログラムのアンインストールまたは変更からjavaが消せなくなってしまって
新たにjavaをインストールすることもできなくなってしまいました。
「選択した機能は現在使用できないネットワークリソースにあります。」
「OKをクリックして再実行するか、インストールパッケージ jre1.6.0 20msiを含むフォルダーに対する代替えパスを以下のボックスに入力します。」
と表示されます。
知っていましたら教えてくださいm(_ _)m

657 :デフォルトの名無しさん:2011/07/27(水) 09:42:50.07
>640
インターフェースと実装クラスを分けて、間に噛ました動的プロキシでメソッド名をスレッドローカルに保持。
全てのケースにうまく適用できる訳ではないが。

658 :デフォルトの名無しさん:2011/07/27(水) 09:56:14.73
英語が出来ない人はジャバラーとはいえない

659 :デフォルトの名無しさん:2011/07/27(水) 10:14:42.78
ジャバーじゃないのか、、、
ジャバ様でどうだ

660 :デフォルトの名無しさん:2011/07/27(水) 10:20:09.74
>>659
英語が出来ない人乙

661 :デフォルトの名無しさん:2011/07/27(水) 10:54:25.82
蛇腹のどこが英語か

662 :デフォルトの名無しさん:2011/07/27(水) 10:58:21.06
ジェイバーでどうだ

663 :デフォルトの名無しさん:2011/07/27(水) 11:16:07.30
>>662
英語が出来ない人乙

664 :デフォルトの名無しさん:2011/07/27(水) 12:07:57.27
プログラマー戦隊、ジャバン!

665 :デフォルトの名無しさん:2011/07/27(水) 12:21:52.76
素直に考えれば ジャヴァニーズ

666 :デフォルトの名無しさん:2011/07/27(水) 12:23:33.69
>>658

667 :デフォルトの名無しさん:2011/07/27(水) 13:18:33.41
JAVANESE WOMEN: THE LAST STAND

668 :デフォルトの名無しさん:2011/07/27(水) 14:20:22.18
>>655
チュートリアルってのは例えばこんなやつのことね。
http://download.oracle.com/javase/tutorial/uiswing/

669 :デフォルトの名無しさん:2011/07/27(水) 14:25:18.17
>>664
英語が出来ない人乙

670 :デフォルトの名無しさん:2011/07/27(水) 15:07:09.20
ジェイヴィストで許してもう

671 :デフォルトの名無しさん:2011/07/27(水) 15:21:22.07
パールの人をパーラーとか言うと、なんだか日本ローカルのさびれたパチンコ屋みたいw

672 :デフォルトの名無しさん:2011/07/27(水) 16:18:54.50
>>668
javadoc見て何がわからんかったん?

673 :デフォルトの名無しさん:2011/07/27(水) 18:00:00.11
2つの行列の積を計算するメソッドがあるMatrixクラスがあります
class Matrix {
int[][] d;

Matrix(int[][] d) {
this.d = d;
}

Matrix product(Matrix m) {
int[][] d = new int[this.d.length][m.d[0].length];
for(int i=0; i<this.d.length; i++) {
for(int j=0; j<m.d[0].length; j++) {
int sum = 0;
for(int k=0; k<this.d[0].length; k++) {
sum += this.d[i][k]*m.d[k][j];
}
d[i][j] = sum;
}
}
return new Matrix(d);
}
}
1.コンストラクタの中がよく分からないです。this.d=dはなにを意味しているのでしょうか?
 d自身にdを代入しているのでしょうか?

2.productメソッドのdの宣言でdの大きさにthis.d.lengthとm.d[0].lengthがあるのですが
 dの大きさを決めるのにd.lengthを使うのはどういうことでしょうか?

初歩的な質問ですいません。

674 :デフォルトの名無しさん:2011/07/27(水) 18:14:18.23
Matrix(int[][] d) {this.d = d;}
コンストラクタの引数にdってついてるから,クラスのメンバのint[][] d;と名前が重複している状態で
だからクラスのメンバのdに,コンストラクタで渡されたdを代入するために
そのオブジェクト自身を指すthisをつけて区別してる.
Matrix(int[][] arg) {d = arg;}
これと意味は同じ.だけど前者の書き方が一般的
2は行列の乗算なんだから,今内部の保持している行列に対して
引数に指定した行列をかけるんだから
結果として得られる行列は縦が内部の行列の縦長さで,
横がかける行列の横の長さになるからだと思うけど
productメソッド内のint[][] dとthis.dは別物だと分かればいいよ

675 :デフォルトの名無しさん:2011/07/27(水) 19:21:17.63
>>673
このプログラムは色々とンコ


676 :デフォルトの名無しさん:2011/07/27(水) 20:51:41.72
>>672
知らんがな

677 :デフォルトの名無しさん:2011/07/28(木) 00:40:09.80
数値の時系列データが並んでいるCSVファイルを読み込んで、それを配列 list1 に入れました。
そして、その15個分の移動平均を順番に取って配列 list2 に入れようとしています。



double[] list2 = new double[list1 - 14];
double sumVar;

for(int i=0; i < list1.length-14; i++){
  sumVar=0;
  for(int j=i ;j<i+15; j++){
    sumVar +=list1[j];
  }
  list2[i++]=sumVar/15;
  
  //確認1
   System.out.println(list2[i-1]);
}

//確認2
for (int k=0 ; k<list2.length; k++){
  System.out.println(list2[k]);
}


上のようなプログラムを書いたんですが、確認1の分ではちゃんと全部の値が正しく表示されたのですが、
確認2の部分では、なぜか奇数番目の配列の数値が0になってしまいます。どうしてかわかりますでしょうか。

678 :デフォルトの名無しさん:2011/07/28(木) 00:44:32.74
すいません、自己解決しました。。。書きこむまで小一時間悩んでたんだけど、質問すると答えが
わかるって…

  list2[i++]=sumVar/15;

のインクリメントが余計でした…

679 :デフォルトの名無しさん:2011/07/28(木) 00:49:38.25
>>678
「質問すると答えがわかる」のはよくある事。
問題解決法のパターンの一つ。


680 :デフォルトの名無しさん:2011/07/28(木) 01:48:31.07
もう7/28なんだけど、Java 7リリースまだぁ?

681 :デフォルトの名無しさん:2011/07/28(木) 04:47:25.48
時差も知らんのか

682 :デフォルトの名無しさん:2011/07/28(木) 05:35:42.66
同じパッケージにある、クラスAのvoidのメソッドをクラスBで使うにはどうしたらいいでしょうか?因みにメソッドはデータベースに接続するものです。

683 :デフォルトの名無しさん:2011/07/28(木) 06:51:53.10
エスパー以前にイミフ

684 :デフォルトの名無しさん:2011/07/28(木) 07:00:38.20
ゴメス

685 :デフォルトの名無しさん:2011/07/28(木) 07:39:02.82
クラスA.メソッド()でいいんじゃね

686 :デフォルトの名無しさん:2011/07/28(木) 08:37:10.11
あーなるほど。ありがとうございます

687 :デフォルトの名無しさん:2011/07/28(木) 10:03:46.94
ImageJの質問で申し訳ないのですが・・・
http://www.optinav.com/download/Iterative_Deconvolution.java

このプラグインで、
java.awt.image.ColorModel cmY = ipY.getColorModel();
と、ありますが、これはRGBやCMYK等のカラーモデルを取得しているだけで、画素を取得している訳ではありませんよね?

以下はImageJのライブラリに依存した命令なのですが、
ImageProcessor ipXtemp = new FloatProcessor(iN,iN);
FHT ipX = new FHT(ipXtemp);
ipX.setColorModel(cmY);
(中略)
float[] X = (float[])ipX.getPixels();;

と、カラーモデルをセットしているだけで画素を取得しているようにしか見えません
cmYと言う名前から(最初は黄色を指定していると勘違いしましたが)CMYKをターゲットにしていると思うのですが、
これで画素を取得することが出来るのでしょうか?

多少スレ違いで申し訳無いのですが、よろしくお願いします。
ダメなら画像処理スレ辺りに行ってみます。

688 :デフォルトの名無しさん:2011/07/28(木) 11:10:42.45
FHTってjpegとかに使われるFFTの親戚みたいなもんだから
不可逆圧縮に適したデータに変換してるのかも? 違ったらごめんね。

689 :673:2011/07/28(木) 11:46:18.83
>>674
ということはproductメソッドで宣言する配列の名前はdでなくてもいいのでしょうか?

690 :デフォルトの名無しさん:2011/07/28(木) 11:53:53.84
なんでもいいよ

ていうか一貫してなくていろいろ突っ込みたくなる設計だな
Matrixを値として扱うならコンストラクタは this.d = d;じゃなくてコピーするべきだし
できるだけインスタンスを使い回す方針なんだったらproductは新しくインスタンス作るより
自身のdを変更するべきだと思うが

691 :デフォルトの名無しさん:2011/07/28(木) 12:04:39.98
ああでも結果の行列の型が変わるからnewでいいのか
コンストラクタもpublicじゃないからアリかな

692 :687:2011/07/28(木) 13:31:34.62
>>688
FHTはハートレー変換で、FFTを実数だけで計算する物ですね。

質問時(>>687)では言葉足らずだったのですが、
if(operation == CONVOLVE){がtrueの時は
ImageProcessor ipX = convolve(ipYCopy,fhtA);
と、やっているのでipYの画素値が取得出来るのはわかるのですが、
falseの時は画素値をどこから取得しているのかわからなくって・・・

693 :687:2011/07/28(木) 14:16:15.58
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/awt/image/ColorModel.html

これを見ると、画像の種類だけで無く画素情報も含んでいるようですね。
失礼しました。

694 :673:2011/07/28(木) 17:32:51.24
>>690
わかりました。
ありがとうございました。

695 :デフォルトの名無しさん:2011/07/28(木) 17:42:54.19
成分情報なら持ってるけど画素そのものはもってないだろ。
カラーモデルが情報をもつのと実体から情報を取るのは別。
ちなみにおもいっきりgetPixels()と書いてあるがきいてることが
前半と後半で矛盾してて画素を取得している所がどこか聞きたいのか
カラーモデルが何してるか聞きたいのかハッキリせんな。

696 :687:2011/07/28(木) 18:10:38.99
>>695
ありゃ、やっぱり画素そのものはありませんでしたか。
聞きたいのは、if(operation == CONVOLVE){がfalseの時、
画素をどこから持って来て計算しているかです。

697 :デフォルトの名無しさん:2011/07/28(木) 19:32:50.03
ImageProcessorサブクラスのコンストラクタで配列としてピクセルデータ渡してるじゃないか。

698 :デフォルトの名無しさん:2011/07/28(木) 19:45:07.98
ああ違うな。コンストラクタはint,intか。その下のImagePlus作る手前でやってる

699 :デフォルトの名無しさん:2011/07/28(木) 19:47:27.68
悪い。手前じゃなくて後だわ。字間違えた。

700 :デフォルトの名無しさん:2011/07/28(木) 20:15:29.10
Javaにプリプロセッサがない理由とは?

調べた限りでは「#ifdefやマクロとかを展開して起きる文法その他のエラーが嫌」とか、「条件コンパイルはいらない」とかいう話があったが

701 :デフォルトの名無しさん:2011/07/28(木) 20:17:45.00
HttpServleteRequest.getRemoteAddr()で
リモートIPアドレスを取得したいんだけど
ホスト名が取得されちゃう
どういうことなの

702 :687:2011/07/28(木) 21:06:34.58
>>697-699
ImagePlus impX = new ImagePlus("Deconvolved"+nIter+"_"+IJ.d2s(filterSmallDia),ipX);
impX.show();
//IJ.run("Fire");
ImageProcessor ipXCopy = null;
float[] XCopy = null;
float[] X = (float[])ipX.getPixels();;

ImagePlusの後と言うと、この一番下でしょうか。
このipXはどこから画素を貰って来ているのでしょう?

ImageProcessorのipXtempは宣言時に初期化されていて、それのコピーを繰り返しているだけにしか見えないので・・・。

703 :デフォルトの名無しさん:2011/07/28(木) 22:22:55.28
Java SE 7 まだぁ〜?

704 :デフォルトの名無しさん:2011/07/28(木) 22:28:37.01
荒すな

705 :デフォルトの名無しさん:2011/07/28(木) 23:42:19.89
アプレットを作ってJavaを勉強してます。
何もない画面に表示した画像を方向キーで移動させるところまで書けました。
このとき、たとえば右キーを押したまま左キーを押すと左移動に変わり、左キーを離したらまた右に移動するという動きにするにはどうすればいいでしょうか?。
今は、keyPressedで左右キーの入力を拾ってフラグを立て、メインループの中でフラグ判定して画像の座標を変更していますが、こうすると先にifで判定しているほうのキーが常に優先されてしまいます。


706 :デフォルトの名無しさん:2011/07/28(木) 23:50:26.29
>>702
その下のforループで詰めてる

707 :デフォルトの名無しさん:2011/07/29(金) 00:47:12.06
eclipseからプラグインをインストールする時の事で質問があります。

http://eclipse.seasar.org/updates/3.3
からDoltengをインストールしようとすると以下のような
エラーがでてインストールできません。

インストールする項目の収集中にエラーが発生しました
session context was:(profile=epp.package.jee,
phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operand=, action=).
http://eclipse.seasar.org/updates/3.3/plugins/org.seasar.dolteng.eclipse_0.41.0.jar
のリポジトリーを読み取ることができません。
Read timed out
http://eclipse.seasar.org/updates/3.3/plugins/org.seasar.dolteng.projects.dependencies1_0.41.0.jar
のリポジトリーを読み取ることができません。
Read timed out
http://eclipse.seasar.org/updates/3.3/plugins/org.seasar.dolteng.projects.dependencies2_0.41.0.jar
のリポジトリーを読み取ることができません。
Read timed out

詳しいかた、解決方法をご教授いただけないでしょうか?

708 :デフォルトの名無しさん:2011/07/29(金) 02:46:52.10
相手鯖が落ちてるんじゃね?

709 :デフォルトの名無しさん:2011/07/29(金) 03:14:02.52
プログラム初心者です
netbeansで、javaを使って簡易エディタを作っているのですが、
テキストエリアの文字数を取得するのに
int s = jTextArea1.length();
とするとlength()にシンボルが見つかりませんとでます。
ググってもこれでできると書いてあるのですが、どうしたらよいでしょうか

710 :デフォルトの名無しさん:2011/07/29(金) 03:16:23.97
jTextArea1.getText().length();

711 :デフォルトの名無しさん:2011/07/29(金) 03:51:36.64

Java7
ttp://www.oracle.com/technetwork/jp/java/javase/downloads/

712 :デフォルトの名無しさん:2011/07/29(金) 05:52:35.42
>>710
ありがとうございます

713 :デフォルトの名無しさん:2011/07/29(金) 06:15:53.45
Javaってどおやったら使えるようになるん?

714 :デフォルトの名無しさん:2011/07/29(金) 07:06:40.28
まず服を脱ぎます

715 :デフォルトの名無しさん:2011/07/29(金) 07:19:18.29
次にコーヒーを淹れ、ネクタイを締めます

716 :687:2011/07/29(金) 10:48:16.36
>>706
1回目は空で、2回目から値を入れているってことでしょうか?

717 :デフォルトの名無しさん:2011/07/29(金) 12:38:46.19
>>713
javaをインストールしたら


718 :デフォルトの名無しさん:2011/07/29(金) 17:19:38.93
GUIで四角形を表示させようとしてるんだけど

MyDrawPaneltest.java:22: シンボルを見つけられません。
シンボル: メソッド paintComponent()
場所: MyDrawPaneltest の クラス gui.paintComponent();

っていうエラーが出てコンパイルできないボスケテ

import java.awt.*;
import javax.swing.*;

class MyDrawPaneltest extends JPanel {

JFrame frame;

public void paintComponent(Graphics g) {
frame = new JFrame();

g.setColor(Color.orange);
g.fillRect(20, 50, 100, 100);

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setVisible(true);
}

public static void main(String [] args) {

MyDrawPaneltest gui = new MyDrawPaneltest();
gui.paintComponent();
}
}

719 :687:2011/07/29(金) 17:27:57.59
あああああああああああ
Javaって基本は参照渡しなのね
見方を根本から変えないといけなかったのか

720 :デフォルトの名無しさん:2011/07/29(金) 17:42:41.16
はいはい、参照の値渡し参照の値渡し

721 :デフォルトの名無しさん:2011/07/29(金) 22:54:06.19
>>719
ちがうちがう全部値渡しだよ
オブジェクトは常に参照なだけで
アドレスという値が渡ってはる

722 :デフォルトの名無しさん:2011/07/29(金) 23:04:50.67
>>718
GraphicsがpaintComponent()の引数なんだからGraphics渡せよ。
コンパイル通すだけならnullでもいい。

extends JPanel はいらんぞ。

723 :デフォルトの名無しさん:2011/07/30(土) 01:16:26.77
java初心者なんですが,
test.javaってソースがあるとして,
C:> java test < text.txt
ってな感じでC言語みたいにリダイレクトしようとしたら上手くいかないみたいです

JAVAではリダイレクトはできないんでしょうか?

724 :デフォルトの名無しさん:2011/07/30(土) 03:56:18.37
>>723
できるよ

たとえばこんなソース

import java.io.*;

public class Test {
public static void main (String args[]) throws IOException
{

InputStreamReader inputStreamReader01 = new InputStreamReader(System.in);
BufferedReader bufferedReader01 = new BufferedReader(inputStreamReader01);
String str;

while ((str = bufferedReader01.readLine()) != null) {
System.out.println(str);
}
}
}

725 :デフォルトの名無しさん:2011/07/30(土) 10:26:08.78
>>722
おぉ、なるほど。thx!!!

726 :デフォルトの名無しさん:2011/07/30(土) 11:30:04.94
今未オーダーなので、会社でStruts1.3でちょっとしたWEBシステムを組みながらJ2EEの勉強してるんですけど
ClassAのメンバーとしてClassBのオブジェクトがあって、setAttributeでClassAをセッションに保存してあるとき、
JSPからClassAの中のClassBのメンバーにアクセスするには、どうやってタグ書けばいんでしょうか

ClassAのメンバーは
<bean:write name="classA" propertie="classAmember1" />

じゃあClassAの中のClassBのメンバーはどうやってアクセスすれば?

727 :デフォルトの名無しさん:2011/07/30(土) 11:39:07.04
教えてもいいがWriteTagやPropertyUtilsあたりのソースを見たほうが早い。こいつらはStrutsのView側の本体。

Struts1系なんてもう保守の仕事しかないだろうし、さっさと元ソースから調べられるようにしといたほうがいい。

728 :723:2011/07/30(土) 12:29:07.41
>>724
ありがとうございます
実はいまプログラミングの課題の添削をしていて,
数十人分のソースファイルをバッチファイルで一括コンパイル,実行を行いたいのです

コンパイルは出来たのですが,入力を自動化出来ず困っていたのです
演習の課題なのでソースファイルをいじることは許されません

コンパイラはオラクルの奴なんですが,なんとかならないでしょうか?
条件を詳しく書かなかったために後付になってしまい申し訳ないです

729 :デフォルトの名無しさん:2011/07/30(土) 12:35:57.25
Java関係ねーじゃん。expectコマンドでもしらべろよ。

つうかなにをやりたいのかまともに文章に出来ないこんな奴に添削とかされたくない

730 :デフォルトの名無しさん:2011/07/30(土) 12:51:13.58
静的インポートに関して質問があるのですが、以下の2つのファイルがあって

【ABC.java】
import static DEF.*;

class ABC
{
public static void main(String[] args){
   System.out.print(method(184));  }
}

【DEF.java】
class DEF
{
static int i;
static int method(int j){
i=j;
return i;   }
}

それでをコンパイルを行うと
c:\test>javac -cp . ABC.java
ABC.java:1:シンボルを見つけられません。
シンボル: クラス DEF
import static DEF.*; 
と出てしまいます。要はimport文が間違っていると思うのですが、どうコードを訂正すればよいでしょうか?
また2つのファイルはtestフォルダに格納してあります。


731 :デフォルトの名無しさん:2011/07/30(土) 13:09:15.76
>>730
デフォルトパッケージのクラスはインポートできない。
要するに import DEF; は不可。
同様の理由で import static DEF.*; も不可。

732 :デフォルトの名無しさん:2011/07/30(土) 13:43:58.26
>>731
ありがとうございます。package化されていないとimportできないとのことなので
testフォルダの直下にtest2フォルダを作り、2つのファイルの先頭に以下の記述をして
DEF.javaをtest2フォルダに移動させました。

【ABC.java】
import static test2.DEF.*;

【DEF.java】
package test2;

これでコンパイルが上手くいくと思ったのですが、今度はメソッドのシンボルが
見つけられないとのことでした。
ABC.java:7: シンボルを見つけられません。
シンボル: メソッド method(int)
場所  : ABCのクラス


733 :デフォルトの名無しさん:2011/07/30(土) 14:02:10.37
度々申し訳ありません。自己解決しました。
アクセス修飾子が抜けてました。

734 :デフォルトの名無しさん:2011/07/30(土) 16:54:42.12
他のところで質問したところ、ここに誘導されたのでここで質問します。

サーブレッドでMySqlで簡単なで簡単な掲示板を作成したいのですが、一つ質問があります。
本文の入力でsql インジェクション対策はどのようにするのが一般的なのでしょうか?
現在はpost された値をそのままインサートしています。このとき、”を入力されると簡単にsql インジェクションされます。




735 :デフォルトの名無しさん:2011/07/30(土) 16:59:10.24
PreparedStatementを使え。
ORマッパー使えばなおよし。

736 :734:2011/07/30(土) 18:01:48.69
>>735
ありがとうございます!! 理解しました♪

737 :デフォルトの名無しさん:2011/07/30(土) 19:17:45.47


public class COLor{ //Colorに直すとエラーがなくなりますが、本ではCOLorとなっています。

public static final Color BLACK = new Color(0,0,0);
public static final Color RED = new Color(1,0,0);
public static final Color GREEN = new Color(0,1,0);
public static final Color BLUE = new Color(0,0,1);
public static final Color CYAN = new Color(0,1,1);
public static final Color MAGENTA = new Color(1,0,1);
public static final Color YELLOW = new Color(1,1,0);
public static final Color WHITE = new Color(1,1,1);

public flaot r,g,b;

Color(double r,double g, double b){
this.r = (float);
this.g = (float);
this.b = (float);
}

public static Color operate+(Color c1,Color c2){ //+を消すとエラーがなくなります
return new Color(c1.r+c2.r, c1.g+c2.g, c1.b+c1.b)
}
}

OSはMacで、Eclipseでやってますが上記のエラーが解決されません。
どうすればエラーがなくなるのでしょうか?
初心者的なことかも知れませんがご教授お願いします。


738 :デフォルトの名無しさん:2011/07/30(土) 19:35:08.95
上は単なる誤植だろうがoperate+の方は明らかに不自然だな
他の言語の本と間違えているのでなければ焼き捨ててしまえ

739 :デフォルトの名無しさん:2011/07/30(土) 19:39:51.81
訂正 operate+ → operator+
operator+の下に実がoperator-などがあり…
上のCOLorも誤植かと思ったのですが文章にもCOLorって書いてあり…

もし間違いだった場合、最初のページからこれってどういうこと。

740 :デフォルトの名無しさん:2011/07/30(土) 20:26:40.96
自己解決しました。どうやらダウンロードするファイルにそのクラスが入っているようです。
本にはクラスの内容は言及されてなかったですが…

741 :723:2011/07/30(土) 21:35:48.32
>>729
恐らく,上手くいかないのはリダイレクトをjava.exeが受け取っているからだと考えました
だからリダイレクトと同様の機能をjava.exeが持ってるんじゃないかと思ったんですが,
調べても見当たらなくてここに書き込みさせてもらいました

expectではちょっと上手くいかないようです
入力を求める文章が各人で違いますので

742 :デフォルトの名無しさん:2011/07/30(土) 22:25:02.66
すぐつっかかってくる>>729のようなやつに添削されたくないね。

伸びるやつも伸びなくなるわ。三流コーチみたいにチクチク細かい事言ってきて
新人つぶしちゃうんだろうね。それで、会社も後継者が育たず、ご破算。

ああ、やだやだ。>>729みたいのは、どこの会社でも欲しくないよ。

743 :デフォルトの名無しさん:2011/07/30(土) 22:32:25.29
>>729みたいのは、どこの会社にいてもらっても困るどころか
こんなやつと友達になるのさえ勘弁だな。

彼女が出来たとしても彼女も不憫だろうな。細かいことでチクチクチクチクいってくるんだろう。
たまったもんじゃない。一緒にいるだけでストレスが溜まるってもんだ。

なんで、神様も>>729みたいなやつを作ったんだろうな。あきらかに>>729みたいなやつは必要ないのにね。
こんなやつがいるから、世の中が悪くなるんだ。はやく、この世から出て行って欲しいな。ああ、やだやだ。

>>729みたいなのが、この世に住んでると思うだけで、虫唾が走るわ。

こっちが早く>>729のようなやつが住んでいない別の世の中に行きたいと思うくらいだわ。

744 :デフォルトの名無しさん:2011/07/30(土) 23:07:49.19
チラ裏うざい

745 :デフォルトの名無しさん:2011/07/30(土) 23:09:32.90
つか課題で作られたプログラムがそれぞれ>>724のやり方で
>>741
標準入力から値を読み込んでいるなら,そのまま使えるはずだけどなんでできないの?
その課題って,そもそもリダイレクトすれば自動化できるとかいう以前の話なんじゃ
引数で指定されたテストデータをファイル読み込みするとかじゃないよね
そういう詳しい話が無いから一向に話が進まないんだと思うけど


746 :デフォルトの名無しさん:2011/07/30(土) 23:13:42.10
人は何故、余計な一言を言ってしまうのだろうか。

747 :デフォルトの名無しさん:2011/07/30(土) 23:16:49.06
リダイレクトが何かを理解してないんだろうな。
なんか自動入力プログラムの一種とでも思ってそうだ。ただの標準入力だぞ。

てかIDないのをいいことに、いきなり切れて連レス煽りとかね・・。

748 :デフォルトの名無しさん:2011/07/30(土) 23:19:05.17
いわゆるザコだろ
相手にするな

749 :デフォルトの名無しさん:2011/07/31(日) 00:59:15.69
ばれてないと思ってるのかね
夏だなぁ

750 :デフォルトの名無しさん:2011/07/31(日) 01:39:05.43
Javaでクロージャみたいなことってできる?

public class Hage {
    public static Function hoge() {
        return this.hello;
    }
    private static void hello () {
        System.out.println("Hello");
    }
}
public class test Hoge {
    public void Hoge () {
        Function foo = Hage.hoge();
        foo(); // Hello
    }
}
みたいな感じで

751 :デフォルトの名無しさん:2011/07/31(日) 02:25:37.40
クロージャっぽいことはできる。
けど、そういう書き方はできない気がする。

752 :デフォルトの名無しさん:2011/07/31(日) 02:36:26.24
インスタンスを作って渡したりとかぐらいしかできないようですね、
メソッド自体の参照は渡せないのかあ・・

753 :デフォルトの名無しさん:2011/07/31(日) 04:45:52.39
java7か8で追加されるんじゃ無かったっけ?


754 :デフォルトの名無しさん:2011/07/31(日) 05:53:27.49
Java7のクロージャってシンタックスシュガーじゃなかったっけ

755 :デフォルトの名無しさん:2011/07/31(日) 06:22:01.81
クロージャは Java8 の予定。
代替にはなるかわからんけど Java7 から MethodHandle 使えるよ。
Java8 搭載予定のクロージャも実装には MethodHandle 使う予定らしい。

プロパティが instance.propertyName でアクセスすると既存の名前空間と重なって問題が出るのと同様に
function() も既存の名前空間と重なって問題出そうなので却下らしい。

756 :デフォルトの名無しさん:2011/07/31(日) 10:29:28.77
MethodHandleつかうのか。それクロージャっていうのか?

757 :デフォルトの名無しさん:2011/07/31(日) 11:06:36.67
C#のクロージャもそういう実装だぞ。
メソッドのハンドルと環境オブジェクトをまとめたオブジェクトを渡す。
クロージャっていうと外のローカル変数を取り込むことを言うのが一般的で、実装は関係ないよ。
ただローカル変数のキャプチャは今のところ実現されない方向で、
それこそ全くクロージャじゃないのでラムダと呼ぶようになってる。

758 :デフォルトの名無しさん:2011/07/31(日) 11:10:05.39
そういえばJava7の新機能のこと何も知らないなと思ってググってみたら2009年とかの古い情報ばかり出てきた

759 :デフォルトの名無しさん:2011/07/31(日) 13:01:04.52
>>757
>ローカル変数のキャプチャは今のところ実現されない方向
なぜに?
C++と違ってJava環境はGCを仮定していいんだから
変数の寿命問題とかはどうとでもなりそうなものだが

760 :デフォルトの名無しさん:2011/07/31(日) 13:32:58.98
マルチスレッドで並列実行することを想定してるかららしいよ
競合するからラムダ内からの書き換えは禁止
そんなのフィールドについても同じことが言えるわけで
使い方のレベルの話だから全く説得力無いけどな

761 :デフォルトの名無しさん:2011/07/31(日) 13:53:05.90
Eclipseの最新版でtry (...) {} が文法がエラーになるのですが、
なんとかならんでしょうか

762 :デフォルトの名無しさん:2011/07/31(日) 14:35:14.91
Javaにプリプロセッサが無い理由を教えて下さい。

763 :デフォルトの名無しさん:2011/07/31(日) 14:41:40.72
初期に(アンチC++の一環として)散々プリプロセッサをディスったから

764 : ◆QZaw55cn4c :2011/07/31(日) 14:53:54.40
>>762
プリプロセッサは統合開発環境と相性がわるいから。それこそなんでもありなのがプリプロセッサ。

765 :デフォルトの名無しさん:2011/07/31(日) 14:58:12.21
>>762
アノテーションが有るから


766 :デフォルトの名無しさん:2011/07/31(日) 17:54:13.76
>>761
3.7のリリース版ではコンパイラのjdk7互換サポートが無効にされてるとか。
Maintenance Buildだったら有効になってるとかいう情報も。

767 :デフォルトの名無しさん:2011/07/31(日) 18:45:30.99
intefaceにenumを持たせるのってお行儀よくない?

768 :デフォルトの名無しさん:2011/07/31(日) 19:45:21.45
>>737
なんていう本?

769 :デフォルトの名無しさん:2011/07/31(日) 19:50:35.43
>>767
全然問題ないと思うけど、同じパッケージに入れときゃ事足りる状況しか思い浮かばん。

770 :デフォルトの名無しさん:2011/07/31(日) 20:25:13.96
>>761
Eclipse 3.7のJava 7サポートは9月

771 :デフォルトの名無しさん:2011/07/31(日) 21:02:52.86
すごく基本的な質問を失礼します。
今大学の課題でjavaを書いているのですが、その課題を解くために
「「整数を要素に持つ大きさi の配列」を要素に持つArrayList」をi=1..nとして、
これらを要素に持つ大きさnの配列aを作ろうとしてます。
しかし色々試行錯誤をして、配列の数が変わるのでGenericsがあると駄目なのかと思い、
ArrayList[] a = new ArrayList()[n];
for(int i=1; i <=23; i++){a[i] = new ArrayList<int[i]>();}
などとしてみましたが、結局お手上げ状態です。
どなたかアドバイスを頂けませんか。

772 :771:2011/07/31(日) 21:14:19.66
すみません。事故解決しました。

773 :デフォルトの名無しさん:2011/07/31(日) 22:44:31.83
>>760
最近のスクリプト言語ならyieldに丸投げするんだけどjavaみたいな言語だとこういう
並列処理を言語側の実装が面倒みるなんてのはやらないだろうねぇ。
ていうかローカルキャプチャしないんじゃレキシカルクロージャですら無いじゃん・・・。

774 :デフォルトの名無しさん:2011/07/31(日) 23:09:48.95
いや渡したラムダが並列実行されるかどうかなんてドキュメントに明記して
利用する側もそれをわかって注意して使うのが当たり前でしょ。
勝手に暗黙のうちに並列実行されたりしたら、ローカル変数書き換えられるか
どうかなんて関係なく、どうせまともに動作するわけがない。
だからそんなの「想定しても仕方ないのでそんなこと気にしない」でいいんだよ。
クロージャを持つ言語は基本的にそう。

775 :デフォルトの名無しさん:2011/07/31(日) 23:17:38.94
>>745
>724のやり方は使っていません
課題ではScannerのnextDouble()によって数値を読み込んでいますのでこれを変更することはできないからです
>標準入力から値を読み込んでいるなら,そのまま使えるはずだけどなんでできないの?
というのはexpectのことでしょうか?

それと,荒らしていると思われていますが,自分ではありません
わざわざ自分の時間を使ってアドバイスをくれる方にそんなことするほど馬鹿じゃないです
文章能力が無いのも一応自覚しています

776 :デフォルトの名無しさん:2011/07/31(日) 23:35:24.46
Javaのラムダは今在る無名クラス使った関数オブジェクト作成の
シンタックスシュガーってことで良いの?

777 :デフォルトの名無しさん:2011/07/31(日) 23:39:54.85
>>775
課題を出しているのにJava初心者とか、状況がよく分からん。
コンパイルが通っても正しく動かないことなんてよくあるのに。
そもそもテストケースは別に用意しようとしてるんだよね。
正しく動くか分からない、提出されたものからテストケースを作ろうとしてるわけじゃないよね?

778 :デフォルトの名無しさん:2011/07/31(日) 23:46:47.29
>>776
MethodHandle使うのかもしれないけど、仮にシンタックスシュガーでも
ローカル変数の取り込みは問題なく実現できるよ
並列処理と相性が悪いなどというのは、すべての無名クラスのメソッドは
並列実行されることを想定して書けと言ってるようなもん

779 :デフォルトの名無しさん:2011/07/31(日) 23:49:32.01
流れをぶった切ってしまうようで申し訳ありませんが、
classファイルを直接編集するなら、どういうツールを使いますか?
ttp://classeditor.sourceforge.net/
↑のようなツールを見つけたのですが、他にはありますでしょうか?

780 :デフォルトの名無しさん:2011/08/01(月) 02:17:34.54
申し訳ないと思うなら黙っとけよゴミクズ

781 :デフォルトの名無しさん:2011/08/01(月) 03:09:53.11
誰か問題作って―。

782 :デフォルトの名無しさん:2011/08/01(月) 07:08:40.73
>>781
宿題スレにいっぱいある


783 :デフォルトの名無しさん:2011/08/01(月) 07:39:17.72
>>776
今のところコンパイラがクラス内に勝手にメソッド作ってそのMethodHandleを返す方式らしい。

無名クラスはインナークラスになっちゃうのでthisの意味が変わるのがどーたらこーたらとか聞いた。
コンパイラでどうとでも対応できそうな気もするんだが、そうでもないのかね?

784 :デフォルトの名無しさん:2011/08/01(月) 08:53:08.76
>>781
http://projecteuler.net/

785 :デフォルトの名無しさん:2011/08/01(月) 13:02:18.06
swtってjreに標準で入ってるんですか?

786 :デフォルトの名無しさん:2011/08/01(月) 13:56:00.65
サーブレットの全クラスで、文字列のリソースを保持したグローバル インスタンスを使用したい場合、
シングルトンを使用すれば大丈夫?


787 :デフォルトの名無しさん:2011/08/01(月) 17:06:47.76
すぐつっかかってくる>>780のようなやつに添削されたくないね。

伸びるやつも伸びなくなるわ。三流コーチみたいにチクチク細かい事言ってきて
新人つぶしちゃうんだろうね。それで、会社も後継者が育たず、ご破算。

ああ、やだやだ。>>780みたいのは、どこの会社でも欲しくないよ。

788 :デフォルトの名無しさん:2011/08/01(月) 17:08:34.65
>>780みたいのは、どこの会社にいてもらっても困るどころか
こんなやつと友達になるのさえ勘弁だな。

彼女が出来たとしても彼女も不憫だろうな。細かいことでチクチクチクチクいってくるんだろう。
たまったもんじゃない。一緒にいるだけでストレスが溜まるってもんだ。

なんで、神様も>>780みたいなやつを作ったんだろうな。あきらかに>>780みたいなやつは必要ないのにね。
こんなやつがいるから、世の中が悪くなるんだ。はやく、この世から出て行って欲しいな。ああ、やだやだ。

>>780みたいなのが、この世に住んでると思うだけで、虫唾が走るわ。

こっちが早く>>780のようなやつが住んでいない別の世の中に行きたいと思うくらいだわ。


789 :デフォルトの名無しさん:2011/08/01(月) 17:12:40.74
ここから平常運転。質問者いらっしゃーい。


790 :デフォルトの名無しさん:2011/08/01(月) 17:15:06.18
はい・・最近なんか陰口をたたかれているようで・・

791 :デフォルトの名無しさん:2011/08/01(月) 17:45:20.59
いつも大声で喋ってよく笑う様にしましょう
話す内容は実は支離滅裂でもかまいません
不思議と発言力が付いて一目置かれる様になります
すると陰口も無くなるでしょう

792 :デフォルトの名無しさん:2011/08/01(月) 17:49:19.47
>>786
その手の話はjava.util.ResourceBundleでトライしてみてほしい。

もともとは文字列国際化のための仕組みだが、
国際化抜きにしてもキャッシュ管理してくれるのは便利。

793 :デフォルトの名無しさん:2011/08/01(月) 17:50:22.86
鳩山かよ

794 :デフォルトの名無しさん:2011/08/01(月) 17:52:50.97
>>779
ツールでなくライブラリだけど、Apache BCELが有名。

795 :デフォルトの名無しさん:2011/08/01(月) 19:36:01.73
org.w3c.domのjarファイルが欲しいのですが、どこにありますか?

796 :デフォルトの名無しさん:2011/08/01(月) 19:49:29.32
>>795
JREインストールディレクトリ/lib/rt.jar

797 :デフォルトの名無しさん:2011/08/01(月) 20:12:55.77
訳あってJDK1.5の日本語ドキュメントが必要になったのですが
http://java.sun.com/j2se/1.5.0/ja/docs/ja/
↑これのzipを落とせる場所がいつの間にか無くなっていましたorz
昔あった場所(http://www.oracle.com/technetwork/indexes/downloads/sdlc-decommission-333274.html)
に行くとOracleのほとんど何もないページに飛ばされます…
誰か持ってる人がいたらどこかにアップロードお願いします。


798 :デフォルトの名無しさん:2011/08/01(月) 20:21:28.86
>>775
そのScannerはどのストリームから読み込んでいるわけ?
キーボード?それともファイル?
課題実行→キーボードで値を入力→Scannerで読み込み→処理
っていうプログラムなら、test.txtにキーボード入力の内容を予め入れておけば
C:> java test < text.txt
これでScanner使ってようがなんだろうが自動で入力されて上手くいくよ.
もしもこれで自分が思ってることと違うと思ったならさっさと課題のソース出しちゃえばいいと思うよ.

799 :デフォルトの名無しさん:2011/08/01(月) 20:50:29.42
Immutableに使いたいときにDate型ってどうしてますか?
longで保持しますか?
それとも別のImmutableなDateクラスを使ってますか?

800 :デフォルトの名無しさん:2011/08/01(月) 21:37:53.16
>>799
約束が通じる範囲だったら、変更してはいけない約束にしてそのまま使う
約束が通じない範囲とやりとりする場合は、受け取るときと返すときにコピーする

801 :デフォルトの名無しさん:2011/08/01(月) 22:02:21.26
>>794
ありがとうございます。こんなこと誰もあまりしていないだろうと思っていたのですが、ライブラリまであるのですね。
実行時に動的に書き換えられるということでしょうか?何かJITと相性が悪そうですが、どういったときに利用するのかな。

802 :デフォルトの名無しさん:2011/08/01(月) 22:13:11.71
>>799
long一択
mutableであること、他の選択肢があることから
Dateはオワコン

803 :デフォルトの名無しさん:2011/08/01(月) 22:52:23.25
DateはJDK1.1になるときにimmutable化すべきだった。まーあれじゃ不完全だが。

804 :デフォルトの名無しさん:2011/08/01(月) 22:58:36.45
>>797
前はアーカイブから取れたと思うんだが、見あたらんね。
http://www.oracle.com/technetwork/java/archive-139210.html

805 :デフォルトの名無しさん:2011/08/02(火) 06:06:35.56
オラクルに変わったときほとんどがリンク切れ(しかしページ自体はある状態)→
リンク修正したときにオラクル版に差し替えて一部オリジナル消失までは確認してるからインターネットアーカイブからはどう?

806 :デフォルトの名無しさん:2011/08/02(火) 19:10:49.85
>>797
どうぞ(jdk-1_5_0-doc-ja.zip)
http://ll.la/Lpjh

807 :797:2011/08/02(火) 19:14:18.12
>>806
ありがとうございました!

808 :デフォルトの名無しさん:2011/08/02(火) 20:53:04.24
わからない事があったらなんでも聞いてね

809 :デフォルトの名無しさん:2011/08/02(火) 21:56:08.80
個人的なやりとりはメールでやれ

810 :デフォルトの名無しさん:2011/08/02(火) 21:57:42.71
こうして二人は運命的な出会いを(ry


811 :デフォルトの名無しさん:2011/08/02(火) 22:50:22.07
アッーーーーーーーーー!

812 :デフォルトの名無しさん:2011/08/02(火) 22:56:44.68
package jp.hellodate;
public class HelloDate {
public static void main(String[] args) {
//Date date1 = new Date();
System.out.print("aaa");
}

}
実行するとaaaが表示されますがDate date1 = new Date();のコメントを外すと
Errors exist in required project(s):HelloDate Proceed with launch?ってダイアログが出て実行できません
参考サイトからコピペしてるので問題ないと思ってるのですが解決方法をご教示お願いいたします


813 :812:2011/08/02(火) 23:29:02.16
プロジェクトを作るときにパッケージ名を書いたのが原因みたいでした
よくわかりませんがパッケージは書かないようにします

814 :デフォルトの名無しさん:2011/08/02(火) 23:32:45.40
>>よくわかりませんが

これを言うやつにはほんとプログラム任せたくないよな

815 :デフォルトの名無しさん:2011/08/02(火) 23:34:24.00
文句しか言わないやつとは仕事はしたくないよな

816 :デフォルトの名無しさん:2011/08/03(水) 00:04:23.55
そもそも仕事したくないな

817 :デフォルトの名無しさん:2011/08/03(水) 10:27:49.49
負けかな

818 :デフォルトの名無しさん:2011/08/03(水) 12:31:36.22
Java Magazine読めてる人いる?
登録してログインしても真っ白なページしか出てこないんだが

ttp://www.oracle.com/technetwork/java/javamagazine/index.html

819 :デフォルトの名無しさん:2011/08/04(木) 09:26:29.54
どっちが効率よいですか?
■現在
--------Main.java------------------
Setting set = new Setting(0);
set = Mofulr01.meth1(set);

--------Module01.java--------------
public static Setting meth1(Setting set){
 //なんらかの処理
 return set;
}

■案1
--------Main.java------------------
public static Setting set = new Setting(0);
set = Module01.meth1(set);

--------Module01.java--------------
public static void meth1(){
 Main.set = hogehoge(Main.set)
}

書いていて案1の方が、メモリを消費しない気がするのです。
実際のコードは、4階層くらい下のモジュールでSettingいじってて
リソースを無駄にしている気がしてなりません。

820 :デフォルトの名無しさん:2011/08/04(木) 09:33:20.05
変わらん
でもメモリとか関係なく、設計としては前者の方がベター
モジュールがMainクラスの静的変数に依存するのはちょっと…

821 :デフォルトの名無しさん:2011/08/04(木) 10:49:10.65
>>819
メモリを気にするってことは、組み込みかなにか?
効率どうこうってことは、それは100万回実行される処理なの?
そうでなければどっちも変わらん

822 :デフォルトの名無しさん:2011/08/04(木) 10:58:11.68
再帰呼び出ししすぎてスタックオーバーフローになった、
とかでなければ気にする必要ないな。

823 :デフォルトの名無しさん:2011/08/04(木) 11:19:25.26
>>822
スタックオーバーフローって違う意味だぞw

824 :デフォルトの名無しさん:2011/08/04(木) 11:23:28.00
N階層下までSettingを引数で渡してくのがメモリの無駄遣いっぽくて嫌だから
static経由にしようって話じゃないのか?

825 :デフォルトの名無しさん:2011/08/04(木) 11:30:35.51
メモリ消費をヒープなのかスタックなのかの違い(Cの場合)
をいっているのであれば、

Javaは一通りヒープに領域確保するんじゃなかったっけ?

826 :デフォルトの名無しさん:2011/08/04(木) 11:52:49.20
引数や戻り値で渡すごとに防衛的コピーするってんなら話は別だが、
単に参照素通りさせてるだけならヒープは関係ない。

827 :デフォルトの名無しさん:2011/08/04(木) 12:34:02.58
静的フィールドにmutableなものを入れてはいかん。

初期化しようとしてもクラスローダごと落とさないといけないので、
テストが困難あるいは意図せずテストの順序に依存することになる。

また、その静的フィールドがスレッドセーフでないなら
後からどう頑張ってもスレッドセーフなものを作るのは不可能になるだろう。

ところで、引数の代わりにフィールドを使って、引数の数の絶対数を減らすのは
そのメソッドのシグネチャの複雑さを軽減することになるので、一般的には良い設計指針。
簡単にはクラスをネストするか、手間かけるならビルダーパターンを使えば良いんじゃね?


828 :デフォルトの名無しさん:2011/08/04(木) 16:50:11.24
引数パラメータのオーバヘッドを真剣に心配するレベルであれば
java.lang.ThreadLocal 変数つかおーぜ

余談だが、JVMはヒープにスタックを置いてもよいことになっている。

829 :デフォルトの名無しさん:2011/08/04(木) 17:30:08.54
ThreadLocalは使用目的が違うな。

ヒープにスタックを置いてもよいってのも何か勘違いしとるような。
OSから割り当てられたヒープの一部をVM内部ではスタックに使ってるとか、
VMが実行時最適化するときメモリモデルと矛盾しない範囲でなら
ヒープに置くデータをスタックに置いても良いとか。

830 :デフォルトの名無しさん:2011/08/04(木) 17:32:48.26
んだども、VMとしては、別にスタック領域にスタックをおかなくても機能が十分であれば、ヒープ領域においてもかまわない
ってことでしょ。

831 :デフォルトの名無しさん:2011/08/04(木) 17:39:51.78
それ単なる言葉遊び

832 :デフォルトの名無しさん:2011/08/04(木) 18:30:37.04
Servletでクライアントからファイルと一緒にテキストボックスで文字列をformから送信したい場合どうすればよいでしょうか?
enctype="multipart/form-data"で設定していますが、ファイル単体の場合はもちろん受信ができます。そこにテキストを入れてreq.getParameter()
を使用するとnullが帰ってきてうまくパラメータをとれません。



833 :デフォルトの名無しさん:2011/08/04(木) 18:38:13.19
同じフォーム内なら取れるはずだよ

834 :デフォルトの名無しさん:2011/08/04(木) 18:40:00.65
getattributeじゃない?

835 :832:2011/08/04(木) 18:45:58.30
>> 833,834
返信ありがとうございます。
もちろん同じフォームです、getParameterではとれませんでした。
getattributeの方で試してみます

836 :デフォルトの名無しさん:2011/08/04(木) 19:08:08.81
>>834
getattributeでも取得できませんでした。 マルチパートでの送信時は、他のテキストパラメータとか一緒に送信できないのかな???

837 :デフォルトの名無しさん:2011/08/04(木) 19:25:26.57
クラス設計が勉強できる本はありませんか?
Apacheプロジェクトなどのオープンソースのプログラムを題材として
極力具体的に解説してある本を求めてます。

838 :デフォルトの名無しさん:2011/08/04(木) 19:32:50.69
初心者なんですが、オブジェクトコンポジションについて質問です。

クラスA、クラスBがあり、クラスBがクラスAのインスタンスをクラスBのインスタンス変数の中に格納する設計です。

この場合、サンプルコードでは、クラスBにコンストラクタで、クラスAのインスタンスを引数で受けて、インスタンス変数にセットするようになっています。
しかし、コンストラクタ内で、クラスAのインスタンスを生成して、セットする方がシンプルに思えるのですが、サンプルコードのようにする理由が何かあるのでしょうか?

839 :デフォルトの名無しさん:2011/08/04(木) 21:40:06.29
クラスAのサブクラスに差し替えられるようにするため

840 :デフォルトの名無しさん:2011/08/04(木) 21:51:14.67
>>839
なーるほど!
ポリモルフィズムですね!
ありがとうございました!!

841 :デフォルトの名無しさん:2011/08/05(金) 01:15:32.25
明示的にthisを指すことは出来ない?Javaの勉強を始めたんだが、
次のケースの時にどういう対処をしてるか教えてほしい。

public Test(String name) {
name = name;
}

Javaでは、引数側のnameを別の名前に置き換えることが通例?

842 :841:2011/08/05(金) 01:17:37.70
すまん、thisあったわ。すまん。。。

843 :デフォルトの名無しさん:2011/08/05(金) 02:06:56.77
RMIについてレジストリ、サーバー、クライアントで行う操作手順を教えてください。

844 :デフォルトの名無しさん:2011/08/05(金) 10:06:25.00
>Apacheプロジェクトなどのオープンソースのプログラムを題材として極力具体的に解説してある本を求めてます。
それ自分でコードリーディングすればいいじゃん。

845 :デフォルトの名無しさん:2011/08/05(金) 11:51:38.05
これをJavaで書く場合はどんな感じになる?
クラスごと渡す方法があるみたいだけど、もっときれいに書けないのかな。。

var House = function(){};
House.prototype = {
   eventListener: null,
   setEventListener: function(listener){
      this.eventListener = listener;
   },
   fireEvent: function(name){
      this.eventListener && this.eventListener(name);
   },
   pinpon: function(){
      this.fireEvent("pinpon");
   },
   rurururu: function(){
      this.fireEvent("rurururu");
   }
};

var myhouse = new House();
myhouse.setEventListener(function(name){print(name);});
myhouse.pinpon();
myhouse.rurururu();

// pinpon
// rurururu

846 :デフォルトの名無しさん:2011/08/05(金) 12:45:39.77
スレッドでの処理が完了した時に、コールバックを実行したい。
という場合の定石はどのようなものですか?

847 :デフォルトの名無しさん:2011/08/05(金) 13:25:39.32
>>845
望んでいるものと違う気がするけどこんな感じ?
class HouseEvent {
public void fire(String name) {}
}
class House {
private HouseEvent eventListener = null;
public void setEventListener(HouseEvent listener) {
eventListener = listener;
}
public void fireEvent(String name) {
if (eventListener != null) eventListener.fire(name);
}
public void pinpon() {
fireEvent("pinpon");
}
public void rurururu() {
fireEvent("rurururu");
}
public static void main(String[] args) {
House myhouse = new House();
myhouse.setEventListener(new HouseEvent() {
@Override
public void fire(String name) {
System.out.println(name);
}
});
myhouse.pinpon();
myhouse.rurururu();
}
}


848 :デフォルトの名無しさん:2011/08/05(金) 15:42:56.83
画面から読み込んだ正整数xの倍数で、
画面から読み込んだ正整数yまで
すべての正整数を半角スペースで区切って
画面に表示するプログラム「Kadai2.java」を作成せよ。
ただし、xとして画面から読み込む値は
正の整数が入力されるまで繰り返し入力させるものとする。

というプログラムなんだが、この日本語が複雑すぎてバカなオレには全く分からないんだ。
誰か作成してはくれまいか?

849 :デフォルトの名無しさん:2011/08/05(金) 15:58:33.02
俺もわからん

850 :デフォルトの名無しさん:2011/08/05(金) 16:57:09.72
jdk7にはJavaDBがついてないのですか?

851 :850:2011/08/05(金) 17:11:32.40
すいません、ついてました。

852 :847:2011/08/05(金) 17:52:10.20
>>847
Javaではそういう形になるんだな。助かったよ。ありがとう!

853 :デフォルトの名無しさん:2011/08/05(金) 21:16:09.67
>>848
合ってるかはしらん
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Baibai {
public static void main(String[] args) throws IOException {
System.out.print("正の整数Xを入力してください:");
int x = input();
System.out.print("正の整数Yを入力してください:");
int y = input();
for (int c = 1, z = x; z <= y; c++, z = x * c) {
System.out.print(z + " ");
}
}
private static int input() throws IOException {
int num = 0;
for (;;) {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine();
num = Integer.parseInt(line);
if (num > 0) break;
System.out.println("正の整数を入力してください。");
} catch (NumberFormatException e) {
System.out.println("正の整数を入力してください。");
}
}
return num;
}
}


854 :デフォルトの名無しさん:2011/08/05(金) 22:27:37.20
あれ……コンパイルできねぇ

855 :デフォルトの名無しさん:2011/08/05(金) 22:27:51.51
>>848
自然数を1から始めるとすれば1からyまでの自然数の集合の中のxの倍数が該当する。

856 :デフォルトの名無しさん:2011/08/05(金) 22:51:42.76
最近Javaを学びはじめたんだけど、プログラミング言語Javaの第3版が500円だったら買う価値ある?

857 :デフォルトの名無しさん:2011/08/05(金) 23:20:47.68
>>848
課題なんだから、日本語を教えればOKだよね。

X=10
Y=100
の場合
10 20 30 40 50 60 70 80 90 100

X=7
Y=15
7 14


>>856
学び始めたんだったら、なんだってOK
プロになりたくて、論理や理論を半年の超特急で学びたいとかじゃなければ問題なし。



858 :848:2011/08/06(土) 00:02:15.98
>>853
出来た!あんがとっ!

859 :デフォルトの名無しさん:2011/08/06(土) 03:31:23.51
ゆとりホイホイか

860 :デフォルトの名無しさん:2011/08/06(土) 05:06:50.82
スレッドのrunメソッドを抜けだした後に処理をするにはどうすればいい?
public void run(){
... この中でなくて、抜け出した後。
}

861 :デフォルトの名無しさん:2011/08/06(土) 05:16:18.82
わからない事があったらなんでも聞いてね

862 :デフォルトの名無しさん:2011/08/06(土) 06:39:39.18
>>860
別のスレッドを使ってターゲットのスレッドをjoinすればいいと思うよ

863 :デフォルトの名無しさん:2011/08/06(土) 08:19:25.87
>>862
アホか。自分を生成したスレッドで処理するにきまってんだろ

864 :デフォルトの名無しさん:2011/08/06(土) 09:38:52.22
>>863
runの終了、すなわちスレッドの終了ってのは知っての発言?

865 :デフォルトの名無しさん:2011/08/06(土) 10:48:11.70
>>863
Javaという言語の前にjpnという言語を先に学ぶ必要があるようだ。

866 :863:2011/08/06(土) 11:12:02.33
ん?なんかへんなこと言ったか?
[メインスレッド]→(スレッド実行)→[サブスレッド1] の関係で
サブスレッド1の終了後に処理したいんだからメインスレッドで
処理するというのか間違っている?

少なくともサブスレッド1が別スレッドを仕込むとか言う>>862は異常だと思うが

867 :デフォルトの名無しさん:2011/08/06(土) 11:17:20.88
それじゃあメインスレッドがサブスレッドが終了するまで
またなきゃいけないじゃん

868 :デフォルトの名無しさん:2011/08/06(土) 11:19:37.53
別のスレッド=ターゲットのスレッド以外∋メインスレッド

じゃね?

869 :863:2011/08/06(土) 11:19:41.57
>>867
アホか。タイムアウト付きでjoinするなりステータス見るに決まってんだろ。

870 :863:2011/08/06(土) 11:21:43.09
別にサブスレッドの完了を見て後処理するのは別スレッドでもいいけどさあ、
スレッド実行のチェイニングをしたいんでしょ。それを仕込むのはメインが当然じゃない

871 :デフォルトの名無しさん:2011/08/06(土) 11:34:07.01
>>870
だからそれを>>862が書いてるね

872 :デフォルトの名無しさん:2011/08/06(土) 11:49:01.66
要するに>>863はJavaの前にjpnという言語を先に学んでから出直してこいということ。

873 :デフォルトの名無しさん:2011/08/06(土) 11:58:22.38
>>863,>>864,>>867はどうしようもないバカ

874 :デフォルトの名無しさん:2011/08/06(土) 15:29:06.42
>>860
デザインパターンの「デコラトール」をぜひ学んでみよう。

875 :デフォルトの名無しさん:2011/08/06(土) 17:05:44.23
デコラトール...なんかカッコイイ!(・∀・)

876 :デフォルトの名無しさん:2011/08/06(土) 18:41:45.78
>>874
アホか。単にスレッド終了後に処理したいんならrunに書きゃいいんだよ。
たとえシリアルな実行でも別スレッドでやりたいっていってるんだから、
画面処理とかWindowsのCOM操作みたいに実行スレッドに制限のある状況なんだろ。
そんなところにデコレーターパターン持ってきたら破綻する。

877 :デフォルトの名無しさん:2011/08/06(土) 18:47:43.56
はいはいそーですねっと

878 :デフォルトの名無しさん:2011/08/06(土) 19:38:38.73
「いってらっチョール」が飛び交うオレの職場はアホなのか…

879 :デフォルトの名無しさん:2011/08/06(土) 21:25:41.16
それはアホだね。痛すぎる

880 :デフォルトの名無しさん:2011/08/07(日) 00:48:01.90
文字コード処理で気になったんだが、BOMが付いたり付かなかったり、
なんなのこの糞仕様。

String s = new String(new byte[]{(byte)0xF0, (byte)0xA1, (byte)0x88, (byte)0xBD}, "UTF-8");
dump(s.getBytes("UTF-8")); // → BOMなし
dump(s.getBytes("UTF-16"));//→ BOMあり

あとUTF-16のリトルエンディアンBOMありにする方法がわかりませぬ。
誰かおしえてください

881 :デフォルトの名無しさん:2011/08/07(日) 04:32:58.31
JavaはUnicodeに弱いので、その辺の制御はできない。

未だにUnicode規格で定められたUTF-8のBOMが扱えなかったり、
JARファイルに不正な文字コードを埋め込んだりする。

882 :デフォルトの名無しさん:2011/08/07(日) 05:58:00.37
>未だにUnicode規格で定められたUTF-8のBOMが扱えなかったり、

いや扱えるだろ?
UTF-8のCSVをExcelで読めるようにBOMを埋め込んだ記憶があるんだが。

883 :デフォルトの名無しさん:2011/08/07(日) 09:13:35.65
>>558
遅レスだけど、try の中で return したら finally に行ってくれるんだっけ?

884 :デフォルトの名無しさん:2011/08/07(日) 09:29:55.38
いったん finally にいく。

885 :デフォルトの名無しさん:2011/08/07(日) 10:13:46.80
UTF-8とUNICODEって同じものでしょうか?

886 :デフォルトの名無しさん:2011/08/07(日) 10:27:45.09
エンコード方式と文字セット
シフトJISとJISみたいな・・・

887 :デフォルトの名無しさん:2011/08/07(日) 10:29:56.67
>>883
return値を一時待避するためのローカル変数が
コンパイラによってこっそり用意されるはず

888 :デフォルトの名無しさん:2011/08/07(日) 10:31:14.67
tryの中でreturnするの普通だと思ってた。

889 :デフォルトの名無しさん:2011/08/07(日) 10:42:11.55
>>880
UTF-8はエンディアン関係なしにバイト順が同じになるから本来BOM付けないんだけど
一部のテキスト処理系が自分がUTF-8として判断するために勝手にBOMをつける。
んで、そういう処理系は先頭にBOMがないと正しく処理できないんだけど、本来BOMは
付かないもんだから今度は正しく処理してるほうが正しく処理できなくなる。
だから賢いテキスト処理系は二度エンコードを確認してる。Javaはこっち。

そんでもってUTF-8のBOM有りとなしを区別するのは日本だけだからわざわざUTF-8で
エン/デコーディングするときにBOMはつけないのが普通。
ついでにいうとUTF-8が読めなくなるのはBOMのせいじゃなくて特定のUnicode正規化を要求する場合があるから。
UTF-8のBOMの有無で正しく読めなくなるのは単に手抜きしてるそいつが悪いだけ。ExcelとかMSの名のつくソフトとか。

890 :デフォルトの名無しさん:2011/08/07(日) 10:46:15.10
try {
…処理1…
} catch(hogeException e) {
…処理2…
return hogehoge;
}

デバッグしてみたら確実にcatchには入っているんだけど、処理2は通らずに
returnされるんだけど、どゆこと??

891 :デフォルトの名無しさん:2011/08/07(日) 11:10:11.59
>>885
基本的に間違っちゃいない

892 :デフォルトの名無しさん:2011/08/07(日) 11:23:27.49
>>891
全く違う。
BMPの16bitまでは生のバイト列で扱えるものをASCIIと都合をつけるためにわざわざ8bit列に変換してる。
ASCII圏の連中が1バイトで表せれる文字を多バイトで処理するのが無駄だといちゃもん付けてきたから
打開策としてわざわざ別物を作ったんだよ。

893 :デフォルトの名無しさん:2011/08/07(日) 11:32:37.60
>>890
単なる勘違いじゃね?

処理2からreturnするまで1行毎にprintf デバッグしてみれば?

894 :デフォルトの名無しさん:2011/08/07(日) 13:29:50.61
>>889
Java使いは嘘つきが多いな。
BOMはUTF-8であることのシグネチャーとして付けても付けなくても
良いことがUnicode規格で規定されている。つまりJavaソースに
付いていると処理できないJavaが規格に従っていないだけ。
>正しく処理してるほうが正しく処理できなくなる
これは嘘で、付いていても正しく処理しなければならない(Javaはできない)。

「本来付けない」とか「つけないのが普通」というのは>>889の妄想。

>UTF-8のBOM有りとなしを区別するのは日本だけ
アメリカではLinuxもWindowsも有無が統一されているのかよ嘘つきめ。

UTF-8のBOMの有無で正しく読めなくなるのは正常。なぜならBOM無しは
文字コードが何であるかの情報が無いんだから。
でも.txt限定だがWindowsのメモ帳やExcelは手動でUTF-8を指定すれば
BOM無しで開ける。これが一番正しい挙動。

895 :デフォルトの名無しさん:2011/08/07(日) 13:53:58.38
>>882
BOM付きUTF-8文書をBufferdReaderで読むと
一行目の文字列にU+FEFFが付いてくるのは「扱える」とは言い難いな。
ただのStringにもBOMを許すという設計が中途半端にコケてる。
1行目と2行目を入れ替えた文字列を再生成すると破綻するし。

896 :デフォルトの名無しさん:2011/08/07(日) 14:08:38.76
>>885
別。
この板に専用スレあるから詳しくはそこで。

897 :デフォルトの名無しさん:2011/08/07(日) 14:11:27.59
>>889
> UTF-8のBOMの有無で正しく読めなくなるのは単に手抜きしてるそいつが悪いだけ。

Javaのことかー!
http://bugs.sun.com/view_bug.do?bug_id=4508058


898 :デフォルトの名無しさん:2011/08/07(日) 14:17:43.52
Javaのポリシーなんだろうが、どんなに仕様のバグがあっても
互換性のために直さないよね。

899 :デフォルトの名無しさん:2011/08/07(日) 14:46:17.52
>>889
>ついでにいうとUTF-8が読めなくなるのはBOMのせいじゃなくて特定のUnicode正規化を要求する場合があるから。
Javaは正規化表現が違うと読めないのですか?
表示はできなくても読むぐらいはして欲しいのですが。

900 :デフォルトの名無しさん:2011/08/07(日) 14:51:04.56
>>890
例外が発生せずにメソッドを抜けただけでは?

ちなみに先日こんなコードを書く奴がいて困った。感動的な例外の握りつぶし。
try {...}
// catchなし
finally {
 return;
}

901 :デフォルトの名無しさん:2011/08/07(日) 14:59:47.78
これをJavaで書くとどうなる?

var name = getName() || "unknown";

902 :デフォルトの名無しさん:2011/08/07(日) 15:17:17.87
String tmp = getName();
String name = !StringUtils.isBlank(tmp) ? tmp : "unknown";
かな?

903 :デフォルトの名無しさん:2011/08/07(日) 15:18:41.78
String name = getName() != null ? getName() : "unknown";
||はboolでしか使えないからこうするしかない

904 :デフォルトの名無しさん:2011/08/07(日) 15:29:17.92
三項演算子じゃないと駄目なのか。ありがと!

905 :デフォルトの名無しさん:2011/08/07(日) 15:29:42.35
>>900
は????
お前、人のコードをどうこう言えるレベルじゃないわ
お前派遣だろ?帰っていいよ

906 :デフォルトの名無しさん:2011/08/07(日) 15:30:41.77
>>903は二回 getName() を評価してるが、それで良いのか?

907 :デフォルトの名無しさん:2011/08/07(日) 15:51:22.18
うんこ

908 :デフォルトの名無しさん:2011/08/07(日) 16:16:45.75
>>900
全く間違ってないぞそれ
常にその場で例外処理することを強制されない言語では
かなり一般的なスタイルだ

909 :908:2011/08/07(日) 16:18:34.20
ああfinallyでreturnか
ちゃんと読んでなかった

910 :デフォルトの名無しさん:2011/08/07(日) 16:26:09.97
Errorまで握りつぶさんだろ、普通。
RuntimeException握りつぶすのもどうかと思うし。

911 :デフォルトの名無しさん:2011/08/07(日) 16:43:46.12
ErrorだろうとRuntimeExceptionだろうと、例外が発生してもハンドリングのしようのないシステムもあるんだよ

912 :デフォルトの名無しさん:2011/08/07(日) 16:53:54.59
どちらかというと握りつぶしはハンドリングしてるような。
ハンドリングしないなら放置して即死させる印象が。

913 :デフォルトの名無しさん:2011/08/07(日) 20:22:43.14
>>890
処理2が実行されてないのに確実にcatchに入ってることが分かるなんて、どゆこと?

914 :デフォルトの名無しさん:2011/08/07(日) 21:06:18.88
>>913
あ。。。
catchの行にブレークポイント置いてて、そこで止まったら
例外をキャッチしてるってことでいいよね?
ちとやってみる。

915 :デフォルトの名無しさん:2011/08/07(日) 21:36:52.28
スレッドに関して基礎から学べるオススメの本ありますか?

916 :デフォルトの名無しさん:2011/08/07(日) 23:24:59.37
並行処理プログラミング

917 :デフォルトの名無しさん:2011/08/07(日) 23:28:17.13
synchronized についてアドバイスください。
複数のスレッドがあり、それぞれが、とあるカウンタをインクリメントしにいきます。
この動作を排他制御の対象にするべく、以下の二つの書き方をしました。

OK: http://ideone.com/ZKUGl
synchronized public void countUp(int n) {
int tmp = counter.intValue();
tmp += n;
counter = Integer.valueOf(tmp);
}

NG: http://ideone.com/Qg0Gr
public void countUp(int n) {
synchronized(counter) {
int tmp = counter.intValue();
tmp += n;
counter = Integer.valueOf(tmp);
}
}
この差はいったいどういうわけでしょうか?どうして NG 例ではインクリメントを排他にできないのでしょうか?

918 :デフォルトの名無しさん:2011/08/07(日) 23:33:06.54
>>917
それだけいうならcounterを変えちゃいかんってことになる。
もっと簡単にAtomicInteger使え。

919 :デフォルトの名無しさん:2011/08/07(日) 23:39:07.57
>>917
counterのインスタンスで排他制御するから。
例えば synchronized(Integer.valueOf(0)) {} と
synchronized(Integer.valueOf(1)) {} は並列実行できる。

920 :デフォルトの名無しさん:2011/08/07(日) 23:45:05.97
並行処理と並列処理はどう違うんですか?

921 :デフォルトの名無しさん:2011/08/07(日) 23:47:37.70
>>916
ありがとうございます。amazonで見かけて気になってました。
さっそく見てみます

922 :デフォルトの名無しさん:2011/08/07(日) 23:48:15.70
再代入を連発してるのに、そのインスタンスで排他制御はないわなw

923 :デフォルトの名無しさん:2011/08/07(日) 23:56:40.62
>>917
private Object countLock = new Object();
を定義してそれでsynchronized(countLock)しろ。メソッドにsynchronizedは使うな。

924 :デフォルトの名無しさん:2011/08/08(月) 00:04:42.04
>>916
あれって基礎からだっけ…?

925 :デフォルトの名無しさん:2011/08/08(月) 00:06:05.05
>>920
あんまり相互に連携せずに同時に実行してるのが平行実行。
蜜に連携して通信頻度も多いのが並列実行。

926 :デフォルトの名無しさん:2011/08/08(月) 00:13:10.95
>>917
counterはCountクラスのフィールドなので、Countインスタンス単位で排他制御する必要がある。
しかし、後者はcounterインスタンスに対してロックを取得しようとしている。

couter参照先インスタンスはcountUpメソッド呼び出しごとに生成されるのでCountインスタンス単位での
排他制御には用いることができない。
(counterの参照先が変わらないのであれば今回のような用途で用いることが可能だが)


927 :デフォルトの名無しさん:2011/08/08(月) 00:23:41.62
>>925
どっちかというと逆

928 :デフォルトの名無しさん:2011/08/08(月) 00:27:08.49
どっちかしなくても逆

929 :917:2011/08/08(月) 00:39:20.04
>>918, >>919, >>923, >>926
コメントありがとうございます。感謝しています。

>>926
>couter参照先インスタンスはcountUpメソッド呼び出しごとに生成される
つまり、
>>917 >int tmp = counter.intValue();
の時点での counter 参照先と、
>>917 >counter = Integer.valueOf(tmp);
の時点での counter 参照先が違う、ということでいいでしょうか。

>Countインスタンス単位で排他制御する必要がある。
となると、synchronized(this) とするのがいいのでしょうね。実際これでうまくいきました。

>>923
まあ、べたな ciriticalsection/mutex/semaphoe をつかう(p-thread とか win32api とかの)考え方に近いですね。メソッド全体を synchronized する/synchronized(this)とするのがまずい理由を、もしよろしければ。

930 :デフォルトの名無しさん:2011/08/08(月) 00:42:28.21
>>892
お前も間違えてんぞw

UniCode はキャラクターセット
ASCIIもキャラクターセット

UTF-8 やUTF-7 はエンコード/デコード方式

UniCodeは見た目バイナリデータのように見える。
UTF-8エンコードしたUniCodeは、先頭が必ず1で始まるビット列

UniCodeは、標準的にUTF-8でエンコードすることが決まっている。
エンコードする理由は、
8ビット転送や8ビット単位処理しかできない系でも文字化けせずに転送することを可能にするため。

メール(SMTPやPOP)は7bit or 8bit転送が基本
HTMLも8bitだと思っていた方が良い。
コンピュータ内部は、8bitだったり16bitだったり32bitだったり11bitだったり・・・

931 :デフォルトの名無しさん:2011/08/08(月) 00:48:51.99
んで、
なんでUniCodeでUTF-8が標準的なエンコードに指定されているか、だが、
いろいろ理由があるが、その1つにASCII (キャラクターセットでおもに7bitASCII )との親和性が高いこと。

なぜなら、ASCII をUTF-8エンコードすると、7bitASCIIのbit列の先頭に0をつければよいことと、
ASCII 以外の文字( この場合はUniCode )は先頭が必ず1なので瞬時に確認できること。

だから8bitASCII ( 半角かな ) をUTF-8エンコードしても8bitASCIIとは認識されず、UniCodeの文字と認識される。
=文字化け

932 :デフォルトの名無しさん:2011/08/08(月) 00:52:50.81
てか、たんにエンコード方式なんだから、
UniCodeに限らずバイナリデータならエンコードできる。

ただし、バイナリデータは、
Base64やQエンコードが一般的なので、見ることはないだろう。
せいぜいUniCodeのエンコードの時くらいか。

だから勘違いする人が多いんだよね。


933 :デフォルトの名無しさん:2011/08/08(月) 01:11:16.71
この3レスに渡る壮大なバカレス。どこから突っ込んだら良いものか。。

934 :デフォルトの名無しさん:2011/08/08(月) 01:12:31.01
>>929
横から失礼
そのメソッドだけならあんまり困らないけど、
synchronized (this)はロックの範囲が広くなるから
速度の面から不利になることがあるってところじゃないかな。
synchronizedメソッドはメソッド全部で排他制御されるので、
ロックが要らない部分があると遅くなるよ。

935 :デフォルトの名無しさん:2011/08/08(月) 01:14:46.63
正しい事言ってるなら何でもいいよ。


936 :デフォルトの名無しさん:2011/08/08(月) 01:26:13.22
>>933
やめとけ
こういう馬鹿は突っ込まれるとキレだすタイプ

937 : ◆QZaw55cn4c :2011/08/08(月) 02:34:45.56
>>934 >>923
なるほど。調べたところ、synchronized インスタンスメソッド=synchronized(this) で、そのインスタンスを触るスレッドが一つだけに限定されロック範囲が広くなるのですね。
深く納得しました。ありがとうございます。

938 :デフォルトの名無しさん:2011/08/08(月) 02:36:52.16
いや、むしろ
>>892が切れないかと心配でwww

え?UniCodeって16bitなんだ。へぇ〜www
とか
ASCII圏って何?
とか
別物って何?
とか
突っ込みどころ満載なんだけどwww

939 :デフォルトの名無しさん:2011/08/08(月) 05:20:13.46
続きはこちらで。
UnicodeとUTF-8の違いは? その2
http://hibari.2ch.net/test/read.cgi/tech/1291075205/

940 :デフォルトの名無しさん:2011/08/08(月) 07:31:46.85
>>937
>インスタンスを触るスレッドが一つだけに限定
本当にわかってるのかな。
「thisにロックをかけてからアクセスするようにしましょう」という調停であって、
ロックかけずにアクセスするスレッドがいると排他にならないんだよ。

941 :デフォルトの名無しさん:2011/08/08(月) 09:36:37.19
文字列からXMLを作る方法ってない?
ストリームを渡すんじゃなくて直に文字列を渡したい。
Document doc = builder.parse(new ByteArrayInputStream(xml.getBytes("utf-8")));

942 :デフォルトの名無しさん:2011/08/08(月) 10:10:41.76
InputSourceにStringReaderを食わせてそれをparseすればよい

943 :デフォルトの名無しさん:2011/08/08(月) 11:05:24.77
特定のインターフェースを実装してるサブクラスを列挙するのはどうやるんですか?

944 :943:2011/08/08(月) 11:49:20.08
http://www.javaworld.com/javaworld/javatips/jw-javatip113.html?page=2
これ見つけました。
記事が古いようですが、今もこのやりかたですか?

945 :デフォルトの名無しさん:2011/08/08(月) 18:12:57.40
ためせ、それから質問しろ

946 :デフォルトの名無しさん:2011/08/08(月) 18:29:53.48
いや、そうじゃなくてもっとスマートな方法は2001年以降実装されてないのかと。

947 :デフォルトの名無しさん:2011/08/08(月) 20:38:20.89
コードとかの話してるなかごめんな
javaってダウングレードできるのか?

948 :デフォルトの名無しさん:2011/08/08(月) 22:19:08.46
せめて「できるのでしょうか?」だろ

949 :デフォルトの名無しさん:2011/08/08(月) 22:25:20.48
コードとかの話してるなかごめんな
javaってダウングレードできるのでしょうか?

950 :デフォルトの名無しさん:2011/08/08(月) 23:03:51.57
やってから言えカス。

951 :デフォルトの名無しさん:2011/08/08(月) 23:06:02.07
せめて「やってから聞きなさいよ、バカ!」だろ

952 :デフォルトの名無しさん:2011/08/08(月) 23:13:49.20
ダウングレードってコンパイラのことで良いのか?

953 :デフォルトの名無しさん:2011/08/08(月) 23:25:23.09
jreもjdkもoracleに転がってるんじゃない
http://www.oracle.com/technetwork/java/javase/downloads/index.html

954 :デフォルトの名無しさん:2011/08/09(火) 01:10:12.65
初歩的な質問すみません。

public class test {
int[] i = new int[2]; ←
i[0] = 1;
i[1] = 2;
}
とすると、
「このトークン";"(「←」箇所の";"です)の後には"{"を指定する必要があります」と、エラーが出ます。

public class test {
int[] i = new int[] {1, 2};
}
とするとエラーは起こりませんし、


public class test {
public static void main(string[] args) {
int[] i = new int[2]j;
i[0] = 1;
i[1] = 2;
}
}
この場合もエラーは起こりません。。。

一番上の表記法は何か間違ってるのでしょうか。教えてください。

955 :デフォルトの名無しさん:2011/08/09(火) 01:19:43.45
>>954
public class test {
int[] i = new int[] {1, 2};
}
この i はフィールド変数

public static void main(string[] args) {
int[] i = new int[2]j;
i[0] = 1;
i[1] = 2;
}
この i はローカル変数

956 :デフォルトの名無しさん:2011/08/09(火) 01:23:22.23
public class test {
int[] i = new int[2];
i[0] = 1;
i[1] = 2;
}
はint[] i = new int[2]; が悪いわけじゃなくて,メソッドの中でもないのに
i[0] = 1;とかi[1] = 2;をやってるのが悪いっていう

957 :デフォルトの名無しさん:2011/08/09(火) 01:40:43.86
>>955, >>956
あーなんとなくわかりました。
クラスの地の文ではフィールドを定義するだけで、メソッド内ではないので代入などしてはだめだけど、
2番目の宣言と同時に値も初期化をするのはセーフってことですかね。

ありがとうございました。

958 :デフォルトの名無しさん:2011/08/09(火) 09:39:31.67
> int[] i = new int[2]j;

959 :デフォルトの名無しさん:2011/08/09(火) 11:46:25.17
画像の回転について質問です。
画像を1度ずつ回転させたImageオブジェクトの配列を作成したいのですが、どうしたらいいでしょうか?
今のところGraphics2Dのrotate()で描画先のGraphicsを回転させているのですが、無駄が多いような気がしまして・・・

960 :デフォルトの名無しさん:2011/08/09(火) 11:59:07.44
AffineTransformOp使うと、既存のイメージから回転イメージを生成できたように思う

961 :デフォルトの名無しさん:2011/08/09(火) 12:35:38.52
>>960
回答ありがとうございます
ただ、AffineTransformOpでやってみたら変換後の画像がやたらとぼけてしまうのですが、これはどうしたら直せますか?

962 :デフォルトの名無しさん:2011/08/09(火) 15:06:06.49
すまぬが、アイディアをいただけないか?

メインスレッドがあり、このスレッドが子スレッドを4つ立ち上げる。
メインスレッドと子スレッドのどこでも参照可能な変数がいくつか、ある。

この変数を変更できるのはメインスレッドのみ。
子スレッドはReadのみ可能とする。

子スレッドは今のところ同一マシン上で動いているが、
将来的には別マシンに移行もあり。

どうするのが良いか・・・・悩んでいる。

963 :デフォルトの名無しさん:2011/08/09(火) 15:28:15.92
log4jの設定ファイル(log4j.properties)が上手く読み込めません。

ソースフォルダの下に置いてEclipseから実行しているのですが、

log4j:WARN No appenders could be found for logger (hogehoge.classname).
log4j:WARN Please initialize the log4j system properly.

というエラーが発生します。

どうすれば正しく動くようになりますか?
よろしくお願いします。

964 :デフォルトの名無しさん:2011/08/09(火) 15:29:47.81
自分でどんだけ調べたの?

965 :デフォルトの名無しさん:2011/08/09(火) 16:56:34.36
自由にオーバーライドされたメソッドをリフレクションで呼び出したい。

public abstract class Hoge {
   public void test() {
    リフレクションで、勝手にオーバーライドされた hoge メソッドを実行したい。
   }
}

new Hoge () {
   public void hoge() { System.out.println("hoge"); }
}

このインスタンスで、testを実行したときにhogeを動的に呼び出すにはどうすればいい?だれか助けてくれ。。

966 :デフォルトの名無しさん:2011/08/09(火) 19:31:11.13
>>964
わからないならレスしないでください

967 :デフォルトの名無しさん:2011/08/09(火) 19:53:52.53
>>966
不要ならレスしないでください

968 :デフォルトの名無しさん:2011/08/09(火) 21:02:36.12
>>961
バイキュービック補間とかは試した?
あとは満足いくまでいろいろRenderingHintsいじってみよう。


>Graphics2Dのrotate()で描画先のGraphicsを回転させているのですが、
>無駄が多いような

こっちの方がハードウェア支援の回転とかに頼れそうで効率よさげだけどなぁ。
GDIとかDirectXとか詳しい人は補足よろしく。

969 :デフォルトの名無しさん:2011/08/09(火) 21:43:48.65
>>965
動的プロキシかな

970 :デフォルトの名無しさん:2011/08/10(水) 10:37:16.70
本当にすまない。
誰か教えてくれまいか?

ある変数は自ファイル他ファイル、サブクラス自クラス問わず読み込むことができる
(参照ではなく、Readしかできない)
ところが、特定のクラスからなら、変更できるようにしたい。

アクセス修飾子では不可能。

java.securityを使うか、
簡易的にハッシュをやり取りして書き込みを拒否するか、

どれにしても回りくどい。
なにか良い方法はないでしょうか?

971 :デフォルトの名無しさん:2011/08/10(水) 11:44:19.24
>>970
変数はprivateにして、
getterはpublic、setterにはprotectedないしはデフォルト可視性を使う
というやり方で、どの辺に不具合があるのか分からんのだが

972 :デフォルトの名無しさん:2011/08/10(水) 12:43:03.18
>>971
setter がprotected や なし だと、自ファイルの他クラスから書き込めるのかな?って。

973 :デフォルトの名無しさん:2011/08/10(水) 13:14:37.80
自分が混乱してるのが良く分かる。

>>971
setter が protected や なし だと、同一パッケージから書き込めるでしょ?

基本的にクラスが異なれば、参照だけできて、
特定のクラスだけ書き込めるようにしたい。

やりたいことを言い換えて簡単に言うと、

メンバー変数やsetterを含むすべてのメソッドはprivateにしたい。
特定のクラス(複数)からだけはアクセスできるようにしたい。

974 :デフォルトの名無しさん:2011/08/10(水) 13:23:27.48
>>973
どういう時にそういう処理が必要になるのか知りたい。

975 :デフォルトの名無しさん:2011/08/10(水) 14:29:47.08
>>974
レスありがと。

■概要
公開情報を持ちたいのだが、
勝手に、もしくは不用意に、もしくはオーバーライドして書き換えられないようにしたい。

■詳細
比較的大きな規模のコードで、大きく大別すると、信頼ができるサーバ側のクラスと、
クライアント側が用意するクライアントサイドのクラスとある。

クライアントサイドのクラスは今のところサーバで動かしているが
将来的にはAPIを公開してクライアント側で作ることも想定しているのでまったく信頼できない。
サーバー側にクライアントサイドクラスがあったとしても、クライアントサイドクラスのプログラムミスで
公開情報が不用意に変更されないようにもしたい。

つまりクライアントサイドクラスは、サーバーサイドクラスにレスポンスを返すが、
サーバーサイドクラスだけが、クライアントから受け取った情報を元に、チェックし、精査して公開情報を書き換えたい。

■まとめ
分かりやすく書くと、公開情報の情報の流れを一方向にしたい
サーバー側からクライアント側への情報の流れだけを作りたい
ということ

976 :デフォルトの名無しさん:2011/08/10(水) 14:32:09.10
>>975
■補足
クライアントサイドクラスは、サーバーサイドクラスでも動いている必要があり、
サーバーサイドクラスから呼ばれる。

977 :デフォルトの名無しさん:2011/08/10(水) 14:40:44.69
アプリケーションサーバ使わないで実現するの?

・アクセス修飾子の役割を勘違いしている。
・クラス設計がおかしい。リクエストとレスポンスのクラスを分けるとか。
・サーバの役割がおかしい。クライアントに状態管理を委譲するな。サーバ自身で管理しろ。


978 :デフォルトの名無しさん:2011/08/10(水) 14:45:08.41
わたし企業での開発とか詳しくないけど

クラスの違いでアクセス元を判別しようとする必要性が分からない
サーバーサイドのクラスを同じパッケージにして
チェックを伴った受け取り部分だけ公開すりゃいいんじゃないの

それこそクライアントサイドのクラスが何であるかなんて
判別する必要が無いのでは? APIとして考えてるんでしょ?

979 :デフォルトの名無しさん:2011/08/10(水) 15:25:43.00
>>977
アプリケーションサーバーも、DBも使わない。
んでトランザクション処理をさせたいんだよね。で了承された情報だけをPushで公開したい。

>・アクセス修飾子の役割を勘違いしている。
それはあるかなぁ
>・クラス設計がおかしい。リクエストとレスポンスのクラスを分けるとか。
完全に分離はできている。Queueを使って橋渡しをしている。
>・サーバの役割がおかしい。クライアントに状態管理を委譲するな。サーバ自身で管理しろ。
Status管理は完全にサーバーサイドクラスが行っているので問題はないと思うけど。

今は、1つのサーバーサイドクラスのサブクラスとして公開情報をメンバー変数としておいている。
メンバー変数はすべてprivateで、サブクラスはstaticで宣言している。
そうすると、ほかのサーバーサイドクラスからその値を変更できないんだよね。

でここがポイントなんだけど。。。
その公開用サブクラスに、setterメソッドをpublicで置きたくない。
スレッドセーフにもならないし、
セキュリティ上も好ましくないし、
サーバーサイドは社外の人が開発する可能性もあるので悪意のあるコードを紛れ込まされるのだと困る
(≒変更可能だと困る)
「単なるミスでしたw」と言いながらコーディングミスされても困る。


980 :デフォルトの名無しさん:2011/08/10(水) 15:27:09.06
あいかわらずアホなスレですなw

981 :デフォルトの名無しさん:2011/08/10(水) 15:28:34.62
>>978
サーバーサイドのいくつかのクラスも、公開情報にアクセスして変更する必要があるので、困ってる。
クライアントだけを考えれば、分離すれば済むんだけど。。。

982 :デフォルトの名無しさん:2011/08/10(水) 15:32:10.50
図を描いてみた
ゴールはこちら。

情報の流れを一方向にしたい

ClassA → ClassB → ClassC
↑ ↑
ClassD ClassE

一般的にはどうしたらよいのだろうか?と言う話

983 :デフォルトの名無しさん:2011/08/10(水) 15:41:01.32
次スレ
★★Java質問・相談スレッド147★★
http://hibari.2ch.net/test/read.cgi/tech/1312958339/

984 :デフォルトの名無しさん:2011/08/10(水) 16:26:22.22
>>980
お前の書き込みそればっかだよな

985 :デフォルトの名無しさん:2011/08/10(水) 18:32:37.89
>>981
サーバサイドだけにsetterを公開すればいいじゃん

986 :デフォルトの名無しさん:2011/08/10(水) 18:36:28.58
あだぷた

くらいあんとにはらっぱーだけをこうかいしろ

987 :デフォルトの名無しさん:2011/08/10(水) 19:18:28.39
田中君は鈴木君の命令だけは聞くけど他の人の命令は無視するとする。

1.田中君に鈴木君のインスタンスを持たせる。
2.鈴木君は田中君への命令を自分の変数にセットして田中君を呼び出す。
3.田中君は鈴木君のメソッドを呼び出して鈴木君からの命令を受け取る。

4.他の人が鈴木君を騙って2の処理で田中君を呼び出しても、3の処理で
 鈴木君のメソッドを呼び出したときに鈴木君の変数に値がセットされていないから
 命令を受け取れない。

こんなのではダメ?

988 :デフォルトの名無しさん:2011/08/10(水) 20:10:11.42
ファイルにしてアクセス制限をつけるじゃいかんのか

989 :デフォルトの名無しさん:2011/08/11(木) 11:16:53.86
>>985
そうすると、社外の人が作ったサーバーサイドクラスから変更ができるよね?

990 :デフォルトの名無しさん:2011/08/11(木) 11:22:24.21
>>987
ほぼ、それをやっている。
公開情報からハッシュを生成して、サーバーサイドに上げる。

公開情報にsetterを用意して、正しいハッシュ提示した場合のみ変更し、
正しく無い場合はエラーを戻している。

これの問題は、
公開情報クラスにpublicなsetterを作らなければならないこと。


そのほかには、
サーバーサイドのとあるクラスが公開情報クラスをロックし続ける、ってやつ。
なんかあまりうまくいかなかったのであきらめたけど。

991 :デフォルトの名無しさん:2011/08/11(木) 11:23:07.60
>>988
kwsk

求めているのはそれっぽい、というオーラを感じる

992 :デフォルトの名無しさん:2011/08/11(木) 14:42:30.53
>>990
もうパスワードでいいじゃん

ていうか設計がきもい
誰に聞いてもその設計はきもいって言うと思うよ


993 :デフォルトの名無しさん:2011/08/11(木) 14:46:59.20
きもい設計でも突き詰めていけば何か面白い発見があるかもしれない

994 :デフォルトの名無しさん:2011/08/11(木) 15:03:20.17
>>992
てか、自分でもキモイので質問しているんだけど・・・


早い話が、
Javaでポリインスタンス化が簡単にできれば話は早かったりする。

最新の実装では、(うまくいくか分からないけど)次のようなコードを書いている。

○公開情報(マスター)をサーバーサイドのサブクラスとして定義
○マスターのコピーインスタンスをRead Onlyで生成
基本的に参照はコピーインスタンスで行う。
参照が必要なたびに、サーバーサイドクラスがコピーインスタンスを生成

うーーん、これまたきれいじゃないけど・・・

995 :デフォルトの名無しさん:2011/08/11(木) 15:41:13.68
読み出す奴にはコピー渡しときゃいいって言うなら、
許可情報持たしたクラス(仮にXと呼ぶ)でも作ればいいんじゃない?

・読み出し専用のクラスの場合
 必要なデータのリストをXに持たして、サーバに登録
  → サーバへの要求には常に登録したXを渡す
 情報が欲しいなら、データを要求するメソッドを呼ぶ。サーバはXを見て、必要なデータだけコピーして返す
 もし、書き込み要求をしてきても、許可が無いからエラーを出す

・書き込みもしたいクラスの場合
 ↑と同じだが、登録のときに書き込みもしたい旨を伝えておく。
  → 事前に決められたクラスにだけ書き込み許可を出したいなら、
     Xに登録要求してきたクラスへの参照を持たせて、instanceofでチェックするとか

大本の仕様・要求ってクラス(の持つ機能っていうのか?)で解決する類の問題じゃないと思うのだけれど。

996 :デフォルトの名無しさん:2011/08/11(木) 16:55:49.59
public class Suzuki {
private Tanaka tanaka;
private String meirei;
public void setTanaka(Tanaka tanaka) {
this.tanaka = tanaka;
}
public void setMeirei(String meirei) {
this.meirei = meirei;
}
public String getMeirei() {
return meirei;
}
public String tsuuchi() {
tanaka.henkou();
}
}
public class Tanaka {
private Suzuki suzuki;
private String meirei;
public Tanaka(Suzuki suzuki) {
this.suzuki = suzuki;
}
public void henkou() {
meirei = suzuki.getMeirei(); //鈴木君が田中君に聞きに行く。
}
}

997 :デフォルトの名無しさん:2011/08/11(木) 16:58:13.89
public class Main {
public static void main(String[] args) {
Suzuki suzuki = new Suzuki();
Tanaka tanaka = new Tanaka(suzuki); //1.田中君に鈴木君のインスタンスを持たせる。
suzuki.setTanaka(tanaka);
suzuki.setMeirei("右向け左"); //2.田中君への命令を変数にセット。
suzuki.tsuuchi(); //3.田中君へ通知する。
}
}

998 :デフォルトの名無しさん:2011/08/11(木) 17:01:47.20
>>993
まあ、それは否定しない

999 :デフォルトの名無しさん:2011/08/11(木) 17:10:45.36
デザインパターンの「オブザーバー」のような処理。
変更があるという通知をするだけで実際の変更処理はそれぞれのクラスに任せる。

田中君の命令を変更するメソッドはないので他のクラスは田中君に命令できない。
変更がある場合は通知のみで実際の変更処理は田中君のほうから鈴木君に聞きに行く。

最初からオブザーバーって言ったほうが早かったか。

1000 :デフォルトの名無しさん:2011/08/11(木) 17:14:34.37
>>994
サーバとクライアントがあると(VMが分かれてると)、どっちにしろあんたの言う
> 基本的に参照はコピーインスタンスで行う。
> 参照が必要なたびに、サーバーサイドクラスがコピーインスタンスを生成
とおんなじようなことが発生する訳だけど、理解してる?


1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

262 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)