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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
プログラミング言語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質問・相談スレッド148★★
http://hibari.2ch.net/test/read.cgi/tech/1316477239/

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

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
2デフォルトの名無しさん:2011/10/18(火) 19:54:50.61
**** 関連スレッド案内 ****
■ 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 落ち

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 71 ★★
http://hibari.2ch.net/test/read.cgi/tech/1309076891/
3デフォルトの名無しさん:2011/10/18(火) 19:55:09.03
■ NetBeansに関する雑談は --
NetBeans Part6
http://hibari.2ch.net/test/read.cgi/tech/1273665879/
■ Eclipseに関する雑談は --
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/10/18(火) 21:46:29.27
じゃばーアホなのですぐ重複スレを立ててしまう
5デフォルトの名無しさん:2011/10/18(火) 22:05:20.01
>>1
どんまい
さっさと削除依頼出してこいマヌケ
6デフォルトの名無しさん:2011/10/18(火) 22:10:04.17
JavaのSwingとアプレットの違いがわかりません。
Swingは描画クラスですよね?アプレットとの関連は?
7デフォルトの名無しさん:2011/10/18(火) 22:24:21.59
>>6
全てのものはオブジェクトです。
8デフォルトの名無しさん:2011/10/18(火) 22:31:04.45
>>7
ありがとうございます。アプレットクラスってありますか?
9デフォルトの名無しさん:2011/10/18(火) 23:26:09.04
10デフォルトの名無しさん:2011/10/19(水) 01:16:30.84
じゃあ、あなたたちは何のためにいるんですか?
11デフォルトの名無しさん:2011/10/19(水) 02:31:49.07
>>5
あっちはテンプレ間違えてるだろアホか
12デフォルトの名無しさん:2011/10/19(水) 02:32:38.44
暇つぶし
13デフォルトの名無しさん:2011/10/19(水) 05:07:57.39
はじめまして

今度JOGLを勉強しようと思っているのですが、ダウンロードできる場所と
インストールの方法が良く分かりません。
java.netの説明がたくさんあるのですがそこに行っても、ダウンロードできません。
よろしかったら教えてください。

スレ違いだったらすいません。誘導していただければ幸いです。
14デフォルトの名無しさん:2011/10/19(水) 07:20:50.76
15デフォルトの名無しさん:2011/10/19(水) 19:33:06.70
ソケット通信に使うパケットって、どんな風に設計しますか?
パケットクラス作るものだと思ってたんですが、
byte[]が普通なんでしょうか。
16デフォルトの名無しさん:2011/10/19(水) 20:29:53.80
まさか
if(buf[243]==OK)
とかやっとれんから作るでしょ
17デフォルトの名無しさん:2011/10/19(水) 20:43:55.42
UDPのパケットだったら java.net.DatagramPacket あるけど、
そういう話じゃないのか?

普通はストリーム垂れ流しでパケット単位とか面倒くさい事しないと思うが。
18デフォルトの名無しさん:2011/10/19(水) 20:55:31.37
パケットをSerializableにしてObjectOutputStreamを使ったのですが、
非常識な実装でしょうか。
非常識なら非常識で良いのですが、普通はどのようにするのでしょうか。
19デフォルトの名無しさん:2011/10/19(水) 21:11:31.85
それパケットとか言わんよ、普通。
20デフォルトの名無しさん:2011/10/19(水) 21:13:27.76
eclipse で エディタプラグイン作っており
ツールバーにトグルボタン追加して
ボタンがONの時に、キャレット位置の文字列を取得して
OFFにしたら、その文字列を表示する
というのを試しているのですが
public void run(IAction action) {
  if (action.isChecked()) {
    //文字列取得
  }else{
    //表示
  }
}
if文の中で、文字列の取得やってるんですけど
今の場合だと、ボタンをONにした時しか文字列を取得しません。(つまり1回だけ)
ONの間にキャレット位置を変更したら、文字列も取得しなおす
というようにするには、どうしたらいいでしょうか?
一応javaなのでここで質問したのですが、違ったらすいません。
21デフォルトの名無しさん:2011/10/19(水) 21:23:36.22
>>19
言わんのはわかったのですが、普通はどうするのでしょう。
ByteStreamで各値を入れていく様な形でしょうか。
22デフォルトの名無しさん:2011/10/19(水) 21:29:32.57
普通は好きにする。
23デフォルトの名無しさん:2011/10/19(水) 21:37:46.21
普通と好きとが対立した場合、どちらを選ぶのが普通なんでしょうね。
24デフォルトの名無しさん:2011/10/19(水) 22:09:48.51
ジャバではprivate void meth()となっている関数はprivate fianl void meth()とどう違うのでしょうか?
25デフォルトの名無しさん:2011/10/19(水) 22:30:33.18
privateなメソッドは暗黙にfinalを宣言したのと同等になる。
finalクラスの中のメソッドと同じ扱い。
26デフォルトの名無しさん:2011/10/19(水) 22:33:20.78
ですよね。継承できないんだからfinalでもprivateでも違いはないですよね。
27デフォルトの名無しさん:2011/10/19(水) 23:49:55.24
うん
28デフォルトの名無しさん:2011/10/20(木) 02:22:35.75
>>23
普通を選ぶのが普通じゃないか
29デフォルトの名無しさん:2011/10/20(木) 02:40:13.84
好きに選ぶのが好き
30デフォルトの名無しさん:2011/10/20(木) 02:44:38.31
普通を選ぶのが好きになればいいでしょ
31デフォルトの名無しさん:2011/10/20(木) 07:43:05.33
普通を選ぶのが普通なら、普通を示してほしいのですが。
32デフォルトの名無しさん:2011/10/20(木) 08:01:00.98
自分で自由に定義した一つの通信データの形式をパケットっては言わないでしょ
せいぜいリクエストとか、コマンドって言うんじゃね

GETリクエストを、GETパケットとか言うのかなり違和感がマッハだし
33デフォルトの名無しさん:2011/10/20(木) 08:32:59.53
つまり貴方の仰る普通とは、クラス名はPacketではなくRequestにすべきと。
それだけでしょうか。

Socketに対するPacketのつもりで書いただけだったので、
その誤解は想定外でした。
申し訳ない。
34デフォルトの名無しさん:2011/10/20(木) 10:39:32.93
俺は電文って呼んでる。
業界用語だろうか?
35デフォルトの名無しさん:2011/10/20(木) 11:55:28.82
電文でもパケットでも通じると思うけど
36デフォルトの名無しさん:2011/10/20(木) 13:04:48.75
口語だと電文は紛らわしい
37デフォルトの名無しさん:2011/10/20(木) 19:19:22.13
>>32 がエスパーしてくれるまでずっと意味不だった
38デフォルトの名無しさん:2011/10/20(木) 19:43:21.48
arraylistで

list.remove(10);

とやっても要素が削除されないんですがなぜでしょう?
39デフォルトの名無しさん:2011/10/20(木) 19:49:08.72
後ろの11番目のが詰まってきたんじゃね
40デフォルトの名無しさん:2011/10/20(木) 19:58:56.41
あー
foreachで取り出してるからかー
41デフォルトの名無しさん:2011/10/21(金) 00:05:56.55
String str = new String[]{};

この{}って何ですか?
42デフォルトの名無しさん:2011/10/21(金) 00:55:20.05
配列の初期要素値
43デフォルトの名無しさん:2011/10/21(金) 10:23:28.70
ArrayInitializer 配列初期化子
44デフォルトの名無しさん:2011/10/21(金) 21:41:26.13
(´・ω・`)うん
45デフォルトの名無しさん:2011/10/22(土) 00:07:54.03
FileReaderクラスを作成し、read()でテキストファイルを一文字ずつ読み込んだところ、
改行コードが \r\n として読み込まれてしまいます。
C言語では、\r\n は \n に自動的に置き換えられると思うのですが、
Javaで自動的に置き換えるにはどのようにすればよいのでしょうか?
46デフォルトの名無しさん:2011/10/22(土) 00:13:30.33
Collection<Cloneable>のオブジェクトをdeep copy(格納されている要素すべてをclone()してコピー)したいと考えています。
ですが、Cloneable自体はclone()を宣言していないのでcloneableObject.clone()とは書けません。

このような場合、
cloneableObject.getClass().getMethod("clone").invoke(cloneableObject);
と書くしかないのでしょうか。
良い書き方があれば教えてください。
47デフォルトの名無しさん:2011/10/22(土) 00:19:18.51
はあ
48デフォルトの名無しさん:2011/10/22(土) 00:19:37.71
>>45
System.getProperty("何か忘れた")で改行文字をOS毎に識別してみては?
49デフォルトの名無しさん:2011/10/22(土) 00:22:46.62
>>46
確かCollection<Cloneable>のオブジェクトは最初からcloneメソッドを実装していないと思います。
実装者がcloneメソッドをオーバライドしてdeepcopyするロジックを書かないといけないのかもしれません。
まちがってたらごめんなさい。
50デフォルトの名無しさん:2011/10/22(土) 00:48:46.46
Java7で導入されるプロパティっていうようなアクセッサって
どんなメリットがあるんですかね…

ゲッタとセッタで間に合ってるような気がするんすけど。
51デフォルトの名無しさん:2011/10/22(土) 01:36:50.29
52デフォルトの名無しさん:2011/10/22(土) 02:24:21.75
ですね
53デフォルトの名無しさん:2011/10/22(土) 09:23:11.06
直接・間接問わずに、あるクラスを継承、またはあるインタフェースを実装
しているクラスを探すにはどうしたらよいですか?

また、ロードしている全クラスの中から上記のようなクラスを探すことは
元のクラスの量的に大変でしょうか?
54デフォルトの名無しさん:2011/10/22(土) 09:40:46.88
>>53
まず前者はどういう規模でやりたいんだ?
一つのプロジェクトで、とかならソース集めてgrepするのが速い。
全世界で、とかいうなら諦めろ。

後者については「どのクラスローダーが?」って問題があるけど、時間をかければ十分可能。
5553:2011/10/22(土) 10:01:42.19
ありがとうございます

プログラム自身が自分を構成するクラス群の中から
あるクラスを継承しているクラスを探します
なので検索対象はメモリの中のクラスになります

時間をかければ可能ということは、遅いということですね
クラスローダなどから、検索対象を基本的なクラス(JRE内のクラス?)
ではなくユーザ定義のクラスのみに限定することはできるでしょうか?
56デフォルトの名無しさん:2011/10/22(土) 11:17:40.56
>>55
プログラム自身ってのがフレームワークのコンテナみたいなものを考えているのなら、
クラスローダを自作してloadClass()をoverrideするときにロードしたクラスを記録しとけ。
57デフォルトの名無しさん:2011/10/22(土) 12:05:24.17
>>55
やろうとしていることがいまいち分からん。

「あるプログラムを構成するクラス群」なんて、メモリ内を検索するまでもなく、
ソースコードの段階で、(基本的には)一意に決まってる物なんじゃないの?

それとも、外部からライブラリを持ってきていて、
その中であるクラスが使われているかを調査したい、みたいな事なのか。
その辺の事情も書かないと、有効な回答は出ないと思うよ。
5846:2011/10/22(土) 12:22:46.24
>>49
コード例を挙げると、
List<Cloneable> cl = Arrays.asList(cloneableObjectArray);

List<Cloneable> copyOne = new ArrayList<Cloneable>();
for(Cloneable c : cl.iterator()) {
copyOne.add(/* ここにc.clone()のようなものを書きたい */);
}

引き続きよろしくお願します。
5953:2011/10/22(土) 12:40:00.59
当然外部ライブラリのクラスも含みます。
プログラム自身が実行中にメモリ内から探すので
ソースコードを用意してその中から探すのではありません。
そして、クラスの利用の有無ではなく
直接・間接を問わずあるクラスを継承、またはインタフェースを実装しているクラスを探します。
60デフォルトの名無しさん:2011/10/22(土) 12:42:11.28
>>58
List createDeepClone(List list) {
for(Object o : list) {
if(o instanceof List) {
createDeepClone(o);
} else {
// オブジェクトをクローンして値を格納。
Object newObj = o.clone();
(省略)
}
}
}
List型のみに限定するとこんな感じかな。ちょっと詰めが甘いけど。。
61デフォルトの名無しさん:2011/10/22(土) 12:48:24.37
>>60
Object#clone()はprivateだから無理。
62デフォルトの名無しさん:2011/10/22(土) 12:49:24.67
すまん嘘ついた。
private じゃなくて protectedだな。
63デフォルトの名無しさん:2011/10/22(土) 12:50:51.42
>>53
むり
64デフォルトの名無しさん:2011/10/22(土) 12:54:36.52
>>62
ああそこはcloneメソッドを実装しているクラスかインタフェースにルール決めするしかないかな^^
65デフォルトの名無しさん:2011/10/22(土) 12:56:41.49
AbstractCloneableみたいなの作ってpublicなclone持てばいいんじゃないの?
Cloneableはただのマーカーだからcloneの成功が保証されるわけじゃないから結局実装クラスで呼び出さないとわからない。
66デフォルトの名無しさん:2011/10/22(土) 13:05:35.39
>>64
だから>>46はList<Cloneable>ってCloneable限定してるじゃないか。

>>46
deep copyする必要があるクラスがわかっているのなら、
自分ならインタフェースを別で作る。

public interface MyCloneable extends Cloneable {
  public Object clone();
}

んで、Collection<Cloneable>の代わりにCollection<MyCloneable>を使う感じ。
6745:2011/10/22(土) 13:16:06.03
>>48
C言語のコードを移植したいので、
できればread()で得られたint型が改行かどうか判定する方法を探しています。
System.getProperty()で改行文字を得る方法は、戻り値がString型になってしまうので、困っています。
68デフォルトの名無しさん:2011/10/22(土) 13:25:16.08
>>67
>戻り値がString型
えー

Windowsなら13 → 10 の順番に来た文字コードを怪しめばいいと思うけど
69デフォルトの名無しさん:2011/10/22(土) 13:30:39.57
JAVAの仕事がしたいので勉強しようかと思います
お勧めの書籍やサイトを教えてください。フレームワークというのも重要と聞きました
それも教えてもらえるとありがたいです
70デフォルトの名無しさん:2011/10/22(土) 13:35:52.76
HttpClientやHttpPostクラスから、URLクラスのopenConnectionのようなメソッドの呼び方を教えて下さい。
71デフォルトの名無しさん:2011/10/22(土) 13:38:25.19
>>69
まず書店に足を運んで初心者向けの書籍を立ち読みする。
初心者向けと銘打たれている中にも難易度の差があるから実際に読んでみて一番しっくり来たものを1冊購入する。

フレームワークは重要だけどこれからJava始めますってレベルなら無用の長物。
まずは基本をがっつり固めて勉強するべきだと思う。
あとは・・・Oracle認定Javaアソシエイツ(OCJ-A)かOracle認定Javaプログラマ(OCJ-P)の勉強をすると文法には詳しくなる。
72デフォルトの名無しさん:2011/10/22(土) 13:50:13.45
オブジェクト指向を知らないならJavaの入門書を買って
詰まらないサンプルコードとにらめっこして
クラス定義、メソッド、プライベート、パブリックなど初歩から地道にやってくことになる

他のオブジェクト指向言語を知っているなら
Java APIドキュメントやWebに転がってるサンプルコードを見ながら簡単なものを作ってみるのもいい。
テキストエディタでゴリゴリ書いてもいいけど開発環境使うならEclipseがオススメ
73デフォルトの名無しさん:2011/10/22(土) 14:18:33.96
>>45 >>67
ファイルを行ごとに分けたいが、行末判定は自前で書きたくない、というのであれば、
BufferedReader#readLine() がおすすめ。"\n" と "\r" と "\r\n" で勝手に区切ってくれる。
74デフォルトの名無しさん:2011/10/22(土) 14:30:03.01
>>71
>>72
ありがとうございます。オブジェクト指向すら知らないので本屋にいって探してきます
75デフォルトの名無しさん:2011/10/22(土) 14:35:21.46
>>70
HttpClientクラスがHTTP送受信の機能を提供してるみたいだけど何がやりたいの?
7657:2011/10/22(土) 14:38:14.93
>>59
聞きたいのはそこではなく、なぜ「プログラム自身」が「実行中に」検索する羽目になるのか、という点。
一足飛びにメモリ検索まで行かなくても、他に妙案が出るかもしれないでしょ。

それはそうと、適当にググったらこんなのが見つかった。詳細は知らんけど。
interface com.sun.jdi.ClassLoaderReference#definedClasses()
このクラスローダによって定義されたすべてのロード済みクラスのリストを返します。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jpda/jdi/com/sun/jdi/ClassLoaderReference.html
77デフォルトの名無しさん:2011/10/22(土) 14:51:03.23
>>75
えっと、HttpClientからサイトに描画している文字列をinputstream経由で取りたいんです。
78デフォルトの名無しさん:2011/10/22(土) 15:09:29.31
ジャヴァを頑張って勉強してみても馬鹿には無理
79デフォルトの名無しさん:2011/10/22(土) 15:10:50.09
>>77
じゃあHttpClientクラスなどに頼らず、URL、HttpURLConnection、ByteArrayOutputStreamなどを使って
一から実装したほうが近道なのでは?

ここなんかシンプルですよ
http://x68000.q-e-d.net/~68user/net/java-http-url-connection-1.html
8045:2011/10/22(土) 16:36:30.50
>>73
一行ごとだと、そんな便利な機能があるんですね。
でも、今は、一文字ごとの読み込みで考えています。
一文字ずつ読み込んで、字句解析の様な事をするプログラムを作ってます。
解る方いらっしゃいましたらよろしくお願いいたします。
81デフォルトの名無しさん:2011/10/22(土) 16:47:00.08
>>80
字句解析なら1バイト長で取得したほうがきれいに作れる気がしますが・・

8245:2011/10/22(土) 16:53:12.84
>>81
一バイト長の読み込みが良いのですが、\r\nは自動的に\nに変換してほしいんです。
83デフォルトの名無しさん:2011/10/22(土) 17:01:40.78
windows環境でC言語を始めるにはvisual studio以外にどういう無料の選択肢やコンパイラがありますか?
guiは不用でnative dll作成 (jni,jna)とdirectx,sse,avx,gpu(intel,amd)など常に最新のnative機能とライブラリにそのコンパイラ環境でアクセス出来るかどうかがメインです。
出来ればgplライセンスでなくフリーでプロジェクトの活動も活発なものを期待していますが、そんなオープンソース・コミュニティーみたいな都合がいいwindows用のC言語プロジェクトはwindows環境には存在しないですよね?
84デフォルトの名無しさん:2011/10/22(土) 17:28:08.12
>>83
その前に、中学校の勉強をしっかりやった方がいいんじゃないかな。
85デフォルトの名無しさん:2011/10/22(土) 17:47:56.95
そのまえにスレタイ100回読み直せ
86デフォルトの名無しさん:2011/10/22(土) 17:52:00.12
>>82
>>68 で解決だろ
87デフォルトの名無しさん:2011/10/22(土) 17:52:33.47
でも俺は中学のときにはプログラミングばっかりやってた。
88デフォルトの名無しさん:2011/10/22(土) 17:53:41.72
>>82
1byte長で読み込むけどCR-LFを判別したいってことか。
標準にはそんな仕様ないから自分でCR見つけたら次の1byte読んでLFなら捨てるようなメソッド組めばいいんじゃない?
あ、LFだったとしても文字コードによってはマルチバイトで次がある可能性があるから気をつけて実装しないとダメだよ。
8957:2011/10/22(土) 18:19:57.87
>>53 >>55
試しに作ってみた。使用クラスが >76 とは違うけど。
ttp://ideone.com/W8svq

それっぽくは動くんだけど、ほんとに合ってんのかな?
よく考えたら、確認の仕様がないな・・・
90デフォルトの名無しさん:2011/10/22(土) 18:43:43.72
正規表現について質問させてください
X<B#>A<B#>というStringがあったとして
<*>で囲まれたもの以外のalphabetをreplaceAllを用いて"|"に変換するにはどうすれば良いのでしょう?

Javaでの正規表現の書き方について、参考になるホームページなどがありましたら、教えていただけると助かります。
91デフォルトの名無しさん:2011/10/22(土) 20:41:02.75
正規表現はやめたほうがいい
92デフォルトの名無しさん:2011/10/22(土) 21:18:59.07
俺、正規表現は全く分からねえ。
どうしてもできないのなら、俺みたいにJython使えばいいんじゃね?
でもきっと、ちゃんと正規表現が使えると便利なんだろうな・・・・
9345:2011/10/22(土) 21:30:29.96
>>68
すみません。コメントしていただいたのに見逃してました。
そうですね。少し手間はかかりますが、そうすることにします。

>>88
なるほどです。そうすることにします。
ありがとうございます。
94デフォルトの名無しさん:2011/10/22(土) 22:07:00.61
>>91
正規表現は不味いんですか?
char[]に分解して書くとかなり大変なので
正規表現で片付けようと思ったのですが。

>>92
学校の課題なので、Jythonはちょっと・・・
理屈自体はTuringMachinの講義を受けた際、勉強したはずなのですが
実際に使うとなるとさっぱりです。
ただ、正規表現が使えるといろいろ夢が広がりそうなので、
O'reillyのMastering Regular Expressionsでも読んで見ることにします。

95デフォルトの名無しさん:2011/10/23(日) 00:06:59.18
abstruct で定義されているメソッドのうち、いくつかしか実装しないんだけど
その場合警告が出るのを避ける方法って無いかな?

abstructクラスの部分集合のクラスかインターフェイスを定義したいんだが無理ですよね?
96デフォルトの名無しさん:2011/10/23(日) 00:22:51.59
警告じゃなくエラーじゃないのか
そのクラスも”abstruct ”って宣言しないと
97デフォルトの名無しさん:2011/10/23(日) 02:53:33.86
実際の文字列がどんなのかわからんが
例の文字列を対象にするなら
replaceAll(".*?(<[^>]*?>).*?", "l$1")
ってのはどうだろう
98デフォルトの名無しさん:2011/10/23(日) 03:34:13.90
昨日まで動いてたプログラムが全部
「Could not find the main class」
になって突然全く実行できなくなった。

JUnitのテストコードも、動いてたものが全部
java.lang.ClassNotFoundException:
と言われた。

どんな原因が考えられますか?
99デフォルトの名無しさん:2011/10/23(日) 03:38:12.51
JREインストールしたときにwin7で関連付け最設定されたとか
100デフォルトの名無しさん:2011/10/23(日) 03:41:36.57
一旦クラスファイルを全消し(clean)した後、
再コンパイルせずに起動スクリプトまわしたとか
10198:2011/10/23(日) 03:52:11.14
>>100
確かに、最近cleanしました。
その後起動スクリプトを実行すると何か障害が発生するんですか?
102デフォルトの名無しさん:2011/10/23(日) 03:57:28.48
英語の問題だろ。cleanの意味を考えろ。
10398:2011/10/23(日) 04:16:31.04
automatically buildにチェック入れてたので大丈夫かと思ってたんですが
実際はbinにクラスファイルがありませんでした

原因は最近アンインストールしたsoyatec eumlというプラグインで、
インストール時にプロジェクトのビルドパス設定にsoyatecのものが自動的にセットされていたようで
アンインストールした事でそれが見つからなくなりクラスファイルが出力されていませんでした
104デフォルトの名無しさん:2011/10/23(日) 10:05:24.17
>>95
adapterパターンでググれ
ただしそのabstractクラス設計者が意図している対応かは知らん
105デフォルトの名無しさん:2011/10/23(日) 10:22:51.24
public static void main(String args[]){
Runnable r = someMethod();
Thread t = new Thread(r);
t.run();

Runnable r2 = someMethod();
t = r2;
}

ってやったら、rへの参照がなくなって実行中なのにGCされてしまう可能性はありますか?
106105:2011/10/23(日) 10:23:33.60
t = new Thread(r2);

でした。
107デフォルトの名無しさん:2011/10/23(日) 10:36:16.96
>>97
俺も似たようなのしか思いつかなかったんだけど、
それはreplaceAll使えっていう出題者の意図に沿った回答なんだろうか…
108デフォルトの名無しさん:2011/10/23(日) 10:46:14.62
>>105
自分が書いたコードの範囲だけみると確かに参照が無くなっているように見えるけど、
内部的には参照が保持されてる(ThreadGroupでググろう)。
なのでそういう心配はない。

あとは…デーモンスレッドについてもググっておけばOK。
109デフォルトの名無しさん:2011/10/23(日) 10:50:35.96
>>105
そんなことを心配する前に、mainスレッドがGCされるかどうかを心配すべきだ、って書いてあった。
(つまり実行中のスレッドはGCされないから心配するな、ということ)
110デフォルトの名無しさん:2011/10/23(日) 13:10:14.45
>>96
>>104
サンクス、調べてみまつ
111デフォルトの名無しさん:2011/10/23(日) 13:38:28.19
おいらには別スレッドが開始されているようにはみえないや
112デフォルトの名無しさん:2011/10/23(日) 14:40:58.79
iTextを使って、PDFファイルを開いてダイレクト印刷するサンプルとかってどこかにありませんかね?
プログラム内でPDFを作成して印刷するのはあったんですが…
113デフォルトの名無しさん:2011/10/23(日) 18:44:11.95
http://www.playframework.org/documentation/1.0/templates

これで
#{set title:&{'this.page.title'} /}
みたいにやりたいんだけどエラーが出る。

・ページごとにタイトルを変えたい
・各言語の設定ファイルにページタイトルを記述したい

ということがしたいのだけど、やり方が分からない。
114デフォルトの名無しさん:2011/10/23(日) 18:47:05.81
>>111
115デフォルトの名無しさん:2011/10/23(日) 19:09:52.12
javaプログラミングの課題がわかりません。

問題:二次元配列に、文字a,b,c,d,e,f,g,h,iを初期値として設定して、二重の繰り返し分を用いて二次元配列の値を出力させて次のように表示するプログラムの書き方がわかりません。

a d g e
i a c b
e h f d

初期値の設定まではわかるのですがその後の処理が見当もつきません。
116113:2011/10/23(日) 19:10:09.94
Groovyで
#{set title:'arg'}
の'arg'に変数を使う方法を知りたい

変数には
%{'variable.name'}
これでアクセスできるんだけど、入れ子に出来ないみたいで
#{set title:&{'this.page.title'} /}
これはエラーになる

誰かわかんないかなあ
117デフォルトの名無しさん:2011/10/23(日) 21:32:10.11
>>115
宿題スレ行け。

for (int i=0; i<配列.length; i++) {
....for ( int j=0; j<配列[i].length; j++) {
........ // 配列[i][j]出力
....}
}
118デフォルトの名無しさん:2011/10/23(日) 21:47:33.41
>117
たらい回しされ過ぎワロタ

for (int i = 0; i < 配列.length; i ++) {
  for (int j = 0; j < 配列[i].length; j++) {
    // 配列[i][j]出力
  }
  // 改行出力 (←new!!)
}
119デフォルトの名無しさん:2011/10/23(日) 22:19:02.87
初期値はどうやって設定したんだろう?
120デフォルトの名無しさん:2011/10/23(日) 23:10:05.48
char[][] a = {
  {'a', 'b', "c"},
  ・・・
}
とか、

a[0][0] = 'a';
a[0][1] = 'b';
a[0][2] = 'c';
・・・
とかなんじゃないの。
121デフォルトの名無しさん:2011/10/24(月) 01:05:28.61
へえ
122デフォルトの名無しさん:2011/10/25(火) 11:59:38.65
すみません。今週の月曜日の日付を取得するには
どうしたらいいでしょうか?
123デフォルトの名無しさん:2011/10/25(火) 12:37:40.74
事故解決しました。
124デフォルトの名無しさん:2011/10/25(火) 13:09:35.05
もとい自己解決しました。
125デフォルトの名無しさん:2011/10/25(火) 13:56:43.88
データ通信についての質問なのですが、
JMFを使いキャプチャした画像を他のPCに送り表示させようと考えているのですが、
250KB/Sの送信量になり、受け取るPCで大量の取りこぼしが発生し、画像を再構築することができずにいます。
現在、DatagaramChannelを使い、画像を1024byteのパケットに分割した上で、送っているのですが、
取りこぼしが少なくなるように改善することはできないでしょうか?
よろしくお願いします。
126デフォルトの名無しさん:2011/10/25(火) 14:15:55.49
JMFってなーに?
127デフォルトの名無しさん:2011/10/25(火) 14:17:14.95
ググれ
128デフォルトの名無しさん:2011/10/25(火) 14:25:37.95
>>125
取りこぼしが嫌なら、なんでDatagramChannelを使っているの?
129デフォルトの名無しさん:2011/10/25(火) 16:09:43.57
>>128
データ量が多いのでUDPを使って通信したいと思ったからなのですが、
socketを使用するべきでしょうか?
130デフォルトの名無しさん:2011/10/25(火) 16:54:31.30
取りこぼしや破損時の再送信とか並べ替えのやり方を
他人に聞かないとできないなら、素直にSocket使った方がいい。
131デフォルトの名無しさん:2011/10/25(火) 17:12:01.18
UDPは取りこぼしが起きていい通信に使うもんだ
132125:2011/10/25(火) 17:17:49.20
特性を考えると、確かにそうですよね
取りこぼしたなら、取りこぼしを補填するような方法を考えるべきでした
Socketを使う前にその辺を改めて考えてみます
ありがとうございました
133デフォルトの名無しさん:2011/10/25(火) 17:20:22.67
マルチキャスト使う場合はDatagramSocket使わざるを得ないんだっけ?
134デフォルトの名無しさん:2011/10/25(火) 18:37:51.85
TCPはユニキャストだからな
135デフォルトの名無しさん:2011/10/25(火) 19:51:35.01
JavaEEがなんなのかよくわからないので教えてください。
自分の中では↓の認識なのですが、合っているでしょうか。


JavaEEはWebの大規模開発に必要な機能の仕様を一式まとめただけで、
実際に実装されるコンポーネントやらなんやらは「APサーバ製品」が各自で提供する。

OSSのフレームワークとは違い、提供される部品やらなんやらはAPサーバのものなので、
JavaEEの仕様通り作って、なんかあったらAPサーバのサポートでなんとかしてもらえる。

だから企業とかで色々キビシイ状態?でシステムを作る場合は、JavaEEに準拠してれば安全だね。って仕組み?
136デフォルトの名無しさん:2011/10/25(火) 20:07:56.49
JavaMEってなんですか?
昔あったWindowsMEみたいなもんですか?
137デフォルトの名無しさん:2011/10/25(火) 20:52:53.63
JavaSEってなんですか?
効果音のライブラリですか?
138デフォルトの名無しさん:2011/10/25(火) 20:56:36.96
JavaFXってなんですか?
株式やデイトレード用のシステムですか?
139デフォルトの名無しさん:2011/10/25(火) 21:03:40.27
以上アホジャバーのお笑いのセンスでした
140デフォルトの名無しさん:2011/10/25(火) 21:07:37.83
自分でもちょっとひどいと思ったわ
141デフォルトの名無しさん:2011/10/25(火) 21:14:29.91
windows meは販売当初「ついに発売!ウィンドウズ・わたし(I,My,Me)」とかいうキャッチで販売促進していたらしい。
142デフォルトの名無しさん:2011/10/25(火) 21:32:15.35
  \インポ!インポが抜けとる!/

       ,..-──- 、
     /. : : : : : : : : :: \
    /.: : : : : : : : : : : : : : ヽ
   ,!::: : : : : :,-…-…-ミ: : :',
   {:: : : : :: : :i '⌒' '⌒'i: : :}
   {:: : : : : : |   ェェ ェェ | : :}      ∩___∩
   { : : : : : :|    ,.、  |: :;!     /       ヽ
__ヾ: : : :: :i  r‐-ニ-┐| :ノ     | ●   ●   |
    ゞ : :イ! ヽ 二゙ノイ‐′     | ( _●_)     ミ   <ハァ? あ、import java.io.*;ね。
        ` ー一'´ヽ \  ,,-''"彡 |∪| __/`''--、
  )     |@      |ヽ/     ヽノ ̄       ヽ
  |      |     ノ / ⊂)            メ  ヽ_,,,---
  |     .|@    | |_ノ  ,へ        / ヽ    ヽノ ̄
  |     |_   / /  | /  |        |  ヽ_,,-''"
__|_    \\,,-'"\__/  /     ,────''''''''''''''"""""""
    ~フ⌒ ̄ ̄  ~ヽ ヽ   ̄ ̄"""'''''''--、""''''---,,,,,,__
    /       ̄''、|ノ           )ヽ
___/       ̄ ̄)           / |___
143デフォルトの名無しさん:2011/10/25(火) 21:44:20.62
>JavaEEはWebの大規模開発に必要な機能の仕様を一式まとめただけで、
>実際に実装されるコンポーネントやらなんやらは「APサーバ製品」が各自で提供する。

そう。
JavaSEだってそう。Oracleが公開してるものがデファクトになってるけど。

>JavaEEの仕様通り作って、なんかあったらAPサーバのサポートでなんとかしてもらえる。

ホントに仕様通り作れる?
あの膨大な英文ドキュメント目通した?
それに、JavaEE仕様だけでなく、その前提も知ってないと。
たとえば、Deployment DescirptorファイルはXML形式だからXML仕様知ってないと。
まぁ、仕様通りにできてなければ、何がダメだったか回答してくれるとは思うけど。

>だから企業とかで色々キビシイ状態?でシステムを作る場合は、JavaEEに準拠してれば安全だね。って仕組み?

JavaEEに準拠して作れば、どこのAPサーバでも動くモノになるね。って仕組み。
色々キビシイ状態?でも動く、ってところはAPサーバのウデの見せ所。
144デフォルトの名無しさん:2011/10/25(火) 21:56:26.81
意味不明
145デフォルトの名無しさん:2011/10/25(火) 22:01:54.59
Open Java, Sun Java, Oracle Java, JRockit, IBM JavaとJavaにも色々あるけれどー
146デフォルトの名無しさん:2011/10/25(火) 22:13:16.17
>>143
ご丁寧にありがとうございます。

追加で1点><


APサーバの中身がどうなっているのかよくわからないのですが、
例えばJavaEEが動く仕様のAPサーバで、EJBの代わりにSpringを使いたい場合は、
APサーバにSpringの部品?を入れて、EJBの部品を使わないイメージなんでしょうか?
147デフォルトの名無しさん:2011/10/25(火) 22:27:08.62
148デフォルトの名無しさん:2011/10/25(火) 22:35:42.94
>>146
>EJBの部品

EJBアプリはプログラマが作るモノ。部品として用意されてるわけではない。
(APサーバによってはアプリの部品となるようなEJBを同梱してたりするけど)
APサーバはServlet仕様やEJB仕様に基づいて作られたアプリを動かす実行環境。

>EJBの代わりにSpringを使いたい場合は、APサーバにSpringの部品?を入れて

EJB使わなきゃいけないて訳じゃないし、実際、EJB使わない、ってプロジェクトが多いし。
149デフォルトの名無しさん:2011/10/25(火) 22:44:41.71
>>148

むむむ。

ではEJBコンテナとかSpringuコンテナとか言われているのは、
具体的には何のことを指すのでしょうか?

EJBアプリ=EARファイル のイメージなのですが。
それをコンテナ?上に配置するとはどういったことを指すのでしょうか?
150デフォルトの名無しさん:2011/10/25(火) 22:57:45.94
ggrkasu
151デフォルトの名無しさん:2011/10/25(火) 23:08:48.16
>>149
APサーバが持つEJBコンテナの上でEJBアプリが動く。
クライアントアプリ(Servletとか)からの呼び出しはEJBコンテナが受ける。
EJBコンテナはDeployment Descriptorの情報に従い、権限チェックを行ったり
トランザクション準備といった前処理をした後、EJBアプリを呼び出す。
EJBアプリを呼び出した後、トランザクション決着(コミットやロールバック)といった後処理をして
呼び出し元に返す。

SpringはAPサーバから見ればアプリの一ロジックにしか見えない。
ServletやEJBのお作法は難しいしめんどくさいから、面倒なところは誰かやってよ、ってことで
SpringとかStrutsとかのフレームワークがあると思っとけばいいんじゃね。
EARファイル=Webアプリ(WARファイル)+EJBアプリ(JARファイル)を固めたもの。
152デフォルトの名無しさん:2011/10/25(火) 23:25:11.50
なんか入門読めば済むだろ
153デフォルトの名無しさん:2011/10/25(火) 23:25:22.49
>>151

なんとなく理解できました。ありがとうございます。

まとめるとこんな感じであってますかね?

JavaEEサポートのAPサーバは、WebコンテナやEJBコンテナなどの実行環境のみを提供する。
中で動くアプリは勝手につくりなさいよ。JavaEE仕様のものだったら動くって保証するんだから。

でもJavaEE仕様でつくるのはめんどいし、痒いところに手が届かない場合もあるので、
OSSとかの各種フレームワークを使ってアプリを作りますよ。

んでつくったアプリ(WARファイル、JARファイル)をAPサーバにデプロイしてあげれば、
JavaEE仕様に準拠してなくても、フレームワークが色々補完してちゃんと動きますよ。
154デフォルトの名無しさん:2011/10/25(火) 23:27:59.65
>>153
>なんとなく理解できました。ありがとうございます。

お疲れ様でした。
155デフォルトの名無しさん:2011/10/25(火) 23:28:11.47
日本語でおか
156デフォルトの名無しさん:2011/10/26(水) 01:48:33.33
あさんといっしょ
157デフォルトの名無しさん:2011/10/26(水) 03:30:04.30
>>153
まちがってる。
158154他:2011/10/26(水) 04:36:51.32
あ、確かに間違ってるね。
159デフォルトの名無しさん:2011/10/26(水) 12:39:33.63
質問です。

InputStreamとかが投げるIOExceptionの中に、何種類か意味が違うものがありますが
あれの内容によって別の処理を走らせるというのは、一般的な手法でしょうか。

また、そうする場合、Exceptionのどのパラメータを基に判別すれば良いでしょうか。
160デフォルトの名無しさん:2011/10/26(水) 12:55:41.67
クラスAの非静的パブリックメソッドは、Aの任意のサブクラスでオーバーライドできる

これの答えが手持ちの問題集では×らしいんだが、
◯だよな?
161デフォルトの名無しさん:2011/10/26(水) 14:47:24.80
finalついてる場合…?
てか解説載ってないの?
162デフォルトの名無しさん:2011/10/26(水) 17:45:10.31
飛ばされてきました
例えばRADツールでframeとpanelを作って、panelにlabelを配置して、そのpanelをframeに配置したとしますよね
その後でlabelに変更を加えて、その変更をframeに反映させたいときはどうすればいいのでしょうか
一度frameからpanelを削除して、また改めてpanelを配置するしかないのでしょうか
163デフォルトの名無しさん:2011/10/26(水) 18:14:23.53
どういうエスパーだ
164デフォルトの名無しさん:2011/10/26(水) 18:37:50.86
んなもんRADツールや編集の内容によるだろ。分かるかボケ。
普通はlabelクリックしたら編集モードに入るだろ。そこで編集しろ。
165デフォルトの名無しさん:2011/10/26(水) 19:05:13.76
>>164
ボケはおまえだ
166デフォルトの名無しさん:2011/10/26(水) 19:13:41.55
一度frameからpanelを削除して、また改めてpanelを配置すれば良いよ!
167デフォルトの名無しさん:2011/10/26(水) 20:19:13.44
Windowsでは文字が正しく表示されていましたが、Macでは…と表示されてしまいます。
同じフォントサイズで表示するにはどうしたらいいのでしょうか。
168デフォルトの名無しさん:2011/10/26(水) 20:55:14.79
せめて、どこに表示される文字なのか、位は書くべきだろ。
どんだけエスパー頼みなんだよ。
169デフォルトの名無しさん:2011/10/26(水) 21:32:41.60
すみません。
JButtonクラスのオブジェクト内に表示させる文字です。
170デフォルトの名無しさん:2011/10/26(水) 23:13:06.24
JavaでAWTとSwing使ってゲームを作ったのですが
C言語とGDIに変換したいです。
JavaをC言語に変換するツールってありませんか?
ぐぐってもどこもリンク切れだったりDLしてもなぜかバグってるのばかりです。
171デフォルトの名無しさん:2011/10/26(水) 23:36:49.30
同じ長さのbyte[]が2つあったとして
その2つのバイト列の論理積を取ろうとした時、

for(int i=0; i<a.length; i++){
a[i] &=b[i];
}

みたいに書くと1バイトずつ論理積とっていきますよね。
しかし昨今のCPUなら8バイト以上同時に論理積を取れます。
Cならこのへんは最適化されるだろうけど、Javaだとどうなんですか?
172デフォルトの名無しさん:2011/10/26(水) 23:44:18.67
昨今のcpuなら256bitsづつ処理できますよ。
173デフォルトの名無しさん:2011/10/26(水) 23:54:13.54
>>168
すみません、ただフレームに張り付けたパネルに張り付けたオブジェクトに変更を加えた場合の一般的な表現をしたかっただけです
伝わらなければ家に帰ってからソースをそのまま張り付けようと想うのですが
そもそも開発環境に依存した話なのかjava自体の話なのかも分からないのです
174デフォルトの名無しさん:2011/10/27(木) 00:27:03.43
>>171
Cだとそのへんはどういう最適化がされるんですか?
175デフォルトの名無しさん:2011/10/27(木) 01:01:19.99
>>174
少なくともキャストが可能だからint配列として処理できるし
複数バイト同時に論理積を取る事で実際のループ回数を減らせるはずです
176デフォルトの名無しさん:2011/10/27(木) 01:12:22.39
ジャバ言語のプリミティブ配列ではアラインメント連続であることが言語仕様で保障されているんですか?
177デフォルトの名無しさん:2011/10/27(木) 01:15:58.50
いいえ
178デフォルトの名無しさん:2011/10/27(木) 01:23:37.07
私は全くもって>>176とは関係無いのでが
もう少し誠意を持って答えるべきじゃないのかと思います
私は>>176とは縁もゆかりもありませんけれどもそう思いました
179デフォルトの名無しさん:2011/10/27(木) 01:25:16.36
jvmの[]オブジェクトはアラインメント連続であることがjvm仕様で保障されているんですか?
180デフォルトの名無しさん:2011/10/27(木) 01:27:36.92
でが?!でがぁ?!!
181デフォルトの名無しさん:2011/10/27(木) 01:39:28.14
調べておくので待っててください
182168:2011/10/27(木) 01:59:38.92
>167 >169
追加で3点
@ Win でコンパイルしたクラスファイルを Mac に持っていったのか、それとも、Mac でコンパイルし直したのか
A System.out.println(button.getText()); の結果
B setFont() しているならば、その部分をコメントアウトして実行した結果

>>173
安価ミスかな?
「Label の変更」とは、具体的に何なのか。
その変更は RAD ツールで静的に行うのか、それとも、実行時に動的に行うのか。
前者ならば、使用している RAD ツールは何なのか。
後者ならば、そうだね、まずはソースを貼ってもらった方が、話は早そうだね。
183デフォルトの名無しさん:2011/10/27(木) 04:06:59.58
>複数バイト同時に論理積を取る事で実際のループ回数を減らせるはずです
この程度ならJITがやってる。プログラマの仕事じゃない。
184デフォルトの名無しさん:2011/10/27(木) 05:06:29.26
うそくさ
185デフォルトの名無しさん:2011/10/27(木) 05:35:34.84
8このbyte並べてlongに直してlongとlongで論理積とって8このbyte配列にぶっこむと早くなるの?
186デフォルトの名無しさん:2011/10/27(木) 05:59:45.62
そう言えば最近Swing弄ってないんだが、
Zオーダーだっけ?アレの解消って皆どうやってる?
187デフォルトの名無しさん:2011/10/27(木) 06:06:53.35
>>185
いや同じバイナリデータについて
long[]とbyte[]双方で論理積のベンチとって見たら明らかになるかな
最適化されてなければ、データが十分にでかいと
long[]のほうが数倍速い
188170:2011/10/27(木) 07:22:26.37
ちなみに用途としてはGCCでコンパイルしたいからです。
GCJでやったらとんでもなく重たくなったのでC言語にして
GCCでコンパイルしたいです。なにかないですか?
189デフォルトの名無しさん:2011/10/27(木) 08:49:11.61
C言語で書けばいいですよ
190デフォルトの名無しさん:2011/10/27(木) 08:52:01.75
TomcatでWebアプリを開発したんですが、実際に稼動させるのに
良いサーバーってありますか?
191デフォルトの名無しさん:2011/10/27(木) 11:02:00.54
>>159
ふつうは catch で分ける。

try {
...
} catch (FileNotFoundException notFound) {
...
} catch (EOFException eof) {
...
} catch (IOException ioe) {
// それ以外
}
192デフォルトの名無しさん:2011/10/27(木) 12:20:10.02
>>170
いっそのことVMをC言語で書くってのはどうだ。

>>176
スタック上のbyte型値は32bitとVM仕様で決まっているが、
byte配列の1単位が何bitかは何も決まっていない。

JNI仕様との兼ね合いもあるので、
まあどのVM実装もみっちり詰め込んでんだろうと思うよ。
193デフォルトの名無しさん:2011/10/27(木) 12:27:51.37
194デフォルトの名無しさん:2011/10/27(木) 13:12:59.13
>>171
Java7のFork/Join Frameworkってそういうのに使えるんじゃなかったっけ。よく知らんけど。

>>176
ググったらダイレクトbyteバッファー使えって出てきた。よく知らんけど。

>>192
JNI仕様では(必要があれば)コピーして渡すことになってるのでみっちり詰め込んでなくても仕様上の不都合はない。
そんなことしてるJVMがあるのかは知らんけど。
195デフォルトの名無しさん:2011/10/27(木) 13:49:25.86
>>194
fork/joinはスレッドで並列処理するシロモノだから関係ないぞ。
196デフォルトの名無しさん:2011/10/27(木) 19:44:23.62
>>171
Windows SDKのコンパイラで/O2 /archオプションをつけて
コンパイル
ここの部分のCのソースコードに対して

for (i = 0; i < 8; i++) {
a[i] &= b[i];
}

こんなコード吐き出した

; Line 15
xor eax, eax
$LL6@main:
; Line 16
mov dl, BYTE PTR _b$[esp+eax+260]
and BYTE PTR _a$[esp+eax+260], dl
inc eax
cmp eax, 8
jl SHORT $LL6@main

全然最適化されてない模様
197デフォルトの名無しさん:2011/10/27(木) 19:50:19.93
>>196
i < 8をaとbの長さに一致させたら?
198デフォルトの名無しさん:2011/10/27(木) 20:11:16.62
変わらない

199デフォルトの名無しさん:2011/10/27(木) 20:57:55.53
>>190
Tomでいいじゃん。
知らず知らずのうちに、Tomに依存した作りになってるかもしれんぞよ。
200デフォルトの名無しさん:2011/10/27(木) 21:31:58.82
>>199
世の中にはTOMって略す奴もいるんだなw
201デフォルトの名無しさん:2011/10/27(木) 21:50:37.48
javaプログラム内でオブジェクト同士がもつ木構造的な関係を外部ファイルに保存し、
再利用、また人の目で確認するためにはxmlで保存するというのが
普通のやり方になるのでしょうか?
java.xml.parserでパースすると、<element>hoge</element>みたいな場合に
hogeがelementの値ではなく子要素になるところや、改行もテキストノードになってしまうところが
なんとなくもやもやして、他の方法はないのかなあと考えています。
202デフォルトの名無しさん:2011/10/27(木) 22:28:44.95
>>195
こんな感じじゃないの。よく知らんけど。
http://pastebin.com/0NYWxiHv
203デフォルトの名無しさん:2011/10/27(木) 22:30:03.19
>>201
><element>hoge</element>みたいな場合にhogeがelementの値ではなく子要素になる
え?
"element"のElementノードの下に"hoge"のTextノードができるだろ?

>改行もテキストノードになってしまう
DocumentBuilderFactory#setIgnoringElementContentWhitespace(boolean whitespace)
このファクトリで作成されたパーサが、XML ドキュメントの構文解析時に要素の内容の空白
(大まかに「無視できる空白」と呼ばれることがある) を排除するように指定します (XML Rec 2.10 を参照)。
204デフォルトの名無しさん:2011/10/27(木) 23:20:31.31
>>203
>"element"のElementノードの下に"hoge"のTextノードができるだろ?
はい、言葉足らずですいません。
<element>hoge</element>のように書いたときは
"element"ノードの値としてhogeをもってほしい感じがするのですが
実際は下にできる、つまり親子関係のようになってしまうということです
<parent><child></child></parent>のようにタグの入れ子なら親子関係なのも理解できるのですが。

>DocumentBuilderFactory#setIgnoringElementContentWhitespace(boolean whitespace)
ドキュメント見ろ、という話でしたね。ありがとうございます!
205170:2011/10/27(木) 23:24:09.52
C言語できるにはできるけどJavaで作ったソースをいちいちコピペで翻訳なんて面倒くさいです。
自力で翻訳プログラム作ってみようかなとも思うんでJavaのプログラム解析するパーサとかってないですか?
206デフォルトの名無しさん:2011/10/27(木) 23:25:17.23
xml理解して出なおしてこい
207デフォルトの名無しさん:2011/10/27(木) 23:31:05.36
XMLはそういうものだ、というとそうなのかもしれないのですが
その考え方がなんとなくしっくりこないので他のやり方は
ないのかなあと思い質問させていただいた次第です。
208デフォルトの名無しさん:2011/10/27(木) 23:34:34.82
>>204
そんなキミはjavax.xml.xpath辺りのAPI使うといいかも。

XPathFactory xpf = XPathFactory.newInstance();
XPath xp = xpf.newXPath();
String val = xpf.evaluate("/element", doc); // valに"hoge"がセットされる
209デフォルトの名無しさん:2011/10/28(金) 01:29:34.55
210デフォルトの名無しさん:2011/10/28(金) 10:54:10.60
>>204
<element value="hoge" />
にでもしたらいいのでは。
XML以外だと、JSON で頑張るとか。
211デフォルトの名無しさん:2011/10/28(金) 11:55:00.14
初心者なのですが質問させてください
オライリーの「Head First Java」という本の中で以下のような問題がありました。

問:コンパイル可能かを答えてください
(※DogクラスはAnimalクラスを継承している、どのコードも文法的に正しいクラス、メソッドに属しているものと考える。)
1, ArrayList<Dog> dogs1 = new ArrayList<Animal>();
2, ArrayList<Animal> animals1 = new ArrayList<Dog>();
3, List<Animal> list = new ArrayList<Animal>();
4, ArrayList<Dog> dogs = new ArrayList<Dog>();
5, ArrayList<Animal> animals = dogs;
6, List<Dog> dogList = dogs;
7, ArrayList<Object> objects = new ArrayList<Object>();
8, List<Object> obList = objects;
9, ArrayList<Object> objs = new ArrayList<Dog>();

正解は以下のように示されていました。





まず×印がコンパイル可能なものに付けられているのか、あるいは不可能なものにつけられているのかすら分からないのですが
仮に可能なものに付けられているとしてもEclipseで実際にコードを打ってみた結果と符合しませんし
不可能なものでも同様でです。いかんせん解説がついてないので困りました。
どなたか正しい答えがわかるかたいらっしゃるでしょうか。
212デフォルトの名無しさん:2011/10/28(金) 13:34:02.26
>>207
XMLにこだわりがないのならYAMLとかJSONとか調べてみると幸せになれるかもね。
213デフォルトの名無しさん:2011/10/28(金) 22:11:01.16
tomcatを使っています。

セッションスコープのデータをレプリケーションできるのに
アプリケーションスコープのデータをレプリケーションできないようですが、
代替となる方法はありますか?
214デフォルトの名無しさん:2011/10/28(金) 22:12:17.73
ここで質問していいかわかりませんが質問させてください
携帯のjavaアプリがいまあるんですがこれをPC上で動かして遊びたいのですが可能ですか?
215デフォルトの名無しさん:2011/10/28(金) 22:31:31.18
プログラミングじゃねーだろ。
アンドロイドアプリならエミュレータが必要
216デフォルトの名無しさん:2011/10/28(金) 23:09:40.31
単一ペアを一度だけ保持できるKey-Value Mapを使いたいと考えています。
JavaDocを漁ってみたところ、AbstractMap.SimpleImmutableEntry<S, T> というものをみつけました。
内部クラスではありますが、public宣言されているので普通にインスタンス化は可能です。

ここで質問なのですが、このような内部クラスはたとえpublicであっても使わないほうが良いのでしょうか。
パッケージプライベートとかprotectedなら使うなという意思表示がされていると思うのですが。
217デフォルトの名無しさん:2011/10/28(金) 23:19:24.74
へえ
218デフォルトの名無しさん:2011/10/29(土) 01:44:05.52
クラスパスにあるjarを巡回してClass.forName()で
アノテーション付いてるクラスを探すことをしています。

Class.forName()でクラスロードしたときに
呼ばれるイベントリスナーみたいなものありますか?

SLF4Jのクラスをロードすると警告が出力されて、
これを握りつぶしたいのですけどThrowableが投げられてるわけでは
無い様で困ってます。
219デフォルトの名無しさん:2011/10/29(土) 03:04:26.49
警告を出しているのがクラスローダなのか
該当クラスのstaticイニシャライザなのかは既に調査済み?
220デフォルトの名無しさん:2011/10/29(土) 08:44:19.67
?query=a1&query2=a2
みたいなURL引数を自動的にパースしてくれるライブラリってJavaSEに無いんですか?
221デフォルトの名無しさん:2011/10/29(土) 09:15:16.40
Java初心者です
プログラムを打ち込み、コマンドプロンプトから実行しようとすると
この文字は、エンコーディング MS932 にマップできません
というエラーが出ます。

MKEditorやテラパッド、メモ帳などでShift_JISで保存したのですが
どうしてもエラーがでます。
もう3時間はパソコンの前で格闘しています

原因としては何が考えられるでしょうか??
222デフォルトの名無しさん:2011/10/29(土) 09:26:10.76
格闘のやりすぎでパソコンのモニターに鉄拳を入れちゃったんじゃないですか?
223デフォルトの名無しさん:2011/10/29(土) 11:18:50.61
>>221
ソースコードから日本語全部取り除いて一度試してみては
224デフォルトの名無しさん:2011/10/29(土) 11:46:03.98
>>221
ソースをちょいと見せてみ?
225デフォルトの名無しさん:2011/10/29(土) 11:47:38.65
ちょこちょこアホが湧いてるな。

>>216
特に決まりはないと思う。
自分なら使用する箇所が基盤系か業務系かで分けるかな。
基盤系なら、内部クラスだろうとinternalだろうと必要なら気にせず使う。
業務系なら、基本は使わない。どうしても必要なら、新しいクラスを作ったうえで外部に見せないように利用する。
226デフォルトの名無しさん:2011/10/29(土) 11:55:53.00
そりゃ日本語全部取っ払えば通るのは当たり前じゃないか
「@」とか
IME変換時に「環境依存文字」て出るのは大抵ダメだった気がする
227デフォルトの名無しさん:2011/10/29(土) 12:00:50.48
MS932同士なら大丈夫だろ
228デフォルトの名無しさん:2011/10/29(土) 12:22:58.30
>>216
ソフトウェア工学上、内部クラスを別パッケージから使ってはならないという
慣習はたぶんないよ。
java.text.NumberFormat.Field使っちゃいかんといわれたら困る。
囲みクラスのカプセル性を内部クラスが台無しにするのとかは論外だけど。

老害マネージャーがかわいそうだから内部クラス禁止
という職場もあるそうだが…
229デフォルトの名無しさん:2011/10/29(土) 12:45:51.18
SimpleImmutableEntryって「ネストしたクラス」や「メンバクラス」には該当するけど
「内部クラス」には該当しないからなぁ。
230デフォルトの名無しさん:2011/10/29(土) 12:54:40.94
EntryインタフェースはMapの内部構造だけどアクセサも用意されてるしいいんじゃないかな。

具体的な実装はみてないけど、
普段の内部保持がSimpleEntry、Map#entrySet()とかやるとImmutable版が戻るのかな。
231デフォルトの名無しさん:2011/10/29(土) 13:05:03.85
>>228
うちがまさにそういう職場だ。
1. 無名クラス禁止って言われてGUIのイベント駆動を全部クラス化させられた。
2. メソッド分割禁止って言われて1業務1クラス1メソッド構成。
理由は「客が」理解しにくいから。

PMがどんなにがんばって説得してもダメだったよ。
構築+保守で食っていく予定を変更して構築だけで撤退。

232デフォルトの名無しさん:2011/10/29(土) 13:12:24.25
main()に全て詰め込みってこと?
ライブラリ作成の都合上コメントつきで1000行越えるクラスをよく書くけど、main()1つしか使わないのはすごいクラスになるだろうね。
233デフォルトの名無しさん:2011/10/29(土) 14:42:04.41
>>232
あくまでもメソッド分割が禁止なだけだから業務ごとにクラスは分かれてる。

AD03M1HogeGyomu hoge = new AD03M1HogeGyomu();
hoge.execute();
って感じで起動するわけだが、AD03M1HogeGyomuクラスにはexecute()メソッド一つしかないし、業務ロジックはここにしか書けない。
DBアクセスもデータの詰め替えも全部ここに書いていて読みにくいことこの上ない。

客曰く、いちいち他の場所を見にいくのは非効率的だ。一ヶ所で全部網羅してるこっちの方がいい、そうで。
234デフォルトの名無しさん:2011/10/29(土) 14:46:27.01
>>232
追記。今話したシステムは1業務クラス1メソッドでJavadoc込み4,000行オーバーのファイルサイズ150kとかだよ。
関係者全員が口を揃えて「こんなクソに自分の署名残したくない」ってぼやいてた。
235デフォルトの名無しさん:2011/10/29(土) 14:46:40.74
それで問題ないんじゃないの?
236デフォルトの名無しさん:2011/10/29(土) 15:32:47.21
ほんとに?
237デフォルトの名無しさん:2011/10/29(土) 15:45:58.75
javadoc込みとかいわれてもな
238デフォルトの名無しさん:2011/10/29(土) 17:02:44.51
>>224 ソースです!!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ImageStep extends JFrame implements ActionListener {
ImagePanel panel; //イメージ描画用パネル
JButton button; //移動ボタン
public ImageStep(String title) {
super(title);
setSize(700, 800);
setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);//[x]ボタンでフレームを閉じる
setLocationByPlatform(true); //開始時の表示位置はOSに任せる
setLayout(new BorderLayout()); //画面の下にボタンが置けるレイアウト
//ファイルからイメージを読み込む ファイル名を指定する。
Image im = new ImageIcon("zeng01.jpg").getImage();
panel = new ImagePanel(im); //パネルを作る
add(panel, BorderLayout.CENTER); //パネルを中央に配置
button = new JButton("移動"); //移動ボタンを作る
button.addActionListener(this); //押された時のアクション指定
add(button,BorderLayout.SOUTH); //下に配置する
239デフォルトの名無しさん:2011/10/29(土) 17:05:25.56
public static void main(String args[]) {
ImageStep frame = new ImageStep("張り付け+移動");
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
JButton b = (JButton)e.getSource();
if(b == button) { //移動ボタンが押された。
panel.moveImage(); //イメージを移動させる。
repaint(); //再描画(中身が変わったとき必要)
}
}
}
class ImagePanel extends JPanel {
int width=450,height=300; //パネルの幅と高さ
Image image; //描画するイメージ
int x=10,y=10; //描画する位置
//
ImagePanel(Image im) {
super(); //通常のパネルを作る。
image = im; //イメージを保持
setMinimumSize(new Dimension(width,height)); //パネルの大きさセット
setPreferredSize(new Dimension(width,height));
}
public void paintComponent(Graphics g) {
super.paintComponent(g); //描画のデフォルト動作
g.drawImage(image, x, y, this); //イメージを描画
}
public void moveImage() {
x = x+10;//x,y座標とも10づつ動かす。
y = y+10;
}
}
240デフォルトの名無しさん:2011/10/29(土) 17:10:08.99
日本語が容量食ってるだけじゃね?
241デフォルトの名無しさん:2011/10/29(土) 17:17:01.29
へんなwebサイトからコピー&ペーストした部分があると
スペース文字や日本語の一部が文字コードおかしくなったりする。

手打ちでソースかきなおしてみ。
242デフォルトの名無しさん:2011/10/29(土) 17:20:48.92
やってみます!!
243デフォルトの名無しさん:2011/10/29(土) 17:33:33.96
ログレベルのWARNとERRORの使い分けだけど、
サーバからのエラー通知をログに残して
クライアントでは何事も無かったかのように処理を続行する場合、
エラーなんだから、ERRORレベルでログに残すべき?
それとも、別にクライアント側の動作には
そんなエラー通知など必要ない情報なのだから、WARNレベルでログに残すべき?
244デフォルトの名無しさん:2011/10/29(土) 17:54:28.83
>>240
>>241

もう一度自分で打ち直してみましたが同じエラーが出ました...///

原因がさっぱりわかりません!!
245デフォルトの名無しさん:2011/10/29(土) 18:17:12.27
もう一度やりなおせ
MS932…なんてエラーでないぞ
246デフォルトの名無しさん:2011/10/29(土) 18:34:11.61
メモ帳ANSIでもS-JISでも行けるよな?
247デフォルトの名無しさん:2011/10/29(土) 18:45:21.95
コマンドプロントじゃなくてEclipseやAntで実行するとか?

いや、もしかしてソースをjavacコンパイルして.classにしないで
.javaのまま実行しようとしてる可能性もあるな
248デフォルトの名無しさん:2011/10/29(土) 19:05:58.92
マッピングできませんなら実行時に変わったことやってない限りjavacでコケるんじゃないの?
249デフォルトの名無しさん:2011/10/29(土) 19:38:34.29
>>238
実行じゃなくてコンパイルじゃないのか?

C:\tmp>javac ImageStep.java
ImageStep.java:6: 警告:この文字は、エンコーディング MS932 にマップできません。
JButton button; //遘サ蜍輔?繧ソ繝ウ
^
ImageStep.java:10: 警告:この文字は、エンコーディング MS932 にマップできません。
setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);//[x]繝懊ち繝ウ縺ァ繝輔Ξ繝シ繝?r髢峨§繧?
^
ImageStep.java:10: 警告:この文字は、エンコーディング MS932 にマップできません。
setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);//[x]繝懊ち繝ウ縺ァ繝輔Ξ繝シ繝?r髢峨§繧?


ちなみに↑はUTF-8でソースファイルを保存してコンパイルしたもの。
Shift-JISで保存したらコンパイルも実行も成功した。
250デフォルトの名無しさん:2011/10/29(土) 19:55:21.50
あいぽんからすいません>>244です。
いまパソコンが使える環境じゃないので

>>245
>>246
MKEditorとTeraPad,メモ張で
それぞれ打ち直して見ましたが同じエラーです
>>247
コンパイルするとエラーがでます
eclipseではまだ打ち直してないのですが
大学のパソコンで打ったときは
タブの左にバツ×が表示され
実行できませんでした。
eclipseで打ったソースを
コマンドプロンプトからコンパイルしても
これまた同じエラーがでます。
自分のパソコンにeclipseがインストール
されていないので、インストールしてからeclipseでも
もう一度打ち込んでみようと思います。

自分のパソコンがおかしいんすかね??
ちなみに友達に送ってもらった
動作確認済みのソースも動きません。

ぐぐってみても、自分と同じような
ケースがみつからないし。

また明日がんばります。
変化があり次第書き込みます
ありがとうございました!

251デフォルトの名無しさん:2011/10/29(土) 19:59:34.67
なんだよ。リア充かよ。
252デフォルトの名無しさん:2011/10/29(土) 20:01:25.33
>>249
MKEditor,TeraPad,メモ張
どれも間違いなくShift_JISで
保存し、コンパイルしたのですが
やっぱりエラーがでます。

もう一回メモ帳でやってみます。
253デフォルトの名無しさん:2011/10/30(日) 00:10:01.12
>>252
せめて名前くらいつけろ
NGするやつが困るだろ?

しょーもない話題で
>>243みたいな良質な質問が流されるのは勘弁してくれ
254デフォルトの名無しさん:2011/10/30(日) 00:11:00.28
>>243
ログレベルはなん種類使ってて
どーいう運用してるのか?位は書かんと
答えようないな
255デフォルトの名無しさん:2011/10/30(日) 01:02:36.52
プログラム書く以前のとこでつまづく人には
Javaは向いてない。
もっと低級向け言語あるんだからそっち使えばいいのに。
256デフォルトの名無しさん:2011/10/30(日) 02:12:10.52
アセンブリか
257デフォルトの名無しさん:2011/10/30(日) 03:06:47.13
エディタ、ワープロのマクロでやれ
258デフォルトの名無しさん:2011/10/30(日) 03:17:19.69
どこで質問すればいいのか分からなかったので質問させてください。
行列aをコレスキー分解するプログラムを作ったのですがうまくいきません。どこが間違ってるのでしょうか?ご教授お願いします。
public static void main(String[] args) {
int[][] a = {{1,2,-1,2,1},
{2,5,0,5,4},
{-1,0,6,2,2},
{2,5,2,10,4},
{1,4,2,4,11}};
double[][] l = new double[a.length][a.length];
double sum1=0.0;
              double sum2=0.0;
for(int j=0; j<a.length; j++){
for(int k=0; k<j-1; k++){
sum1 +=l[j][k]*l[j][k];
}
l[j][j]=Math.sqrt(a[j][j]-sum1);
for(int i=j; i<a.length; i++){
for(int k=0; k<j-1; k++){
sum2 +=l[i][k]*l[j][k];
}
l[i][j]=(a[i][j]-sum2)/l[j][j];
}
}
matrix(l,a.length);
}
public static void matrix(double[][]a,int l){
for(int i=0; i<l; i++){
System.out.print("\t[");
for(int j=0; j<l; j++){
System.out.print(a[i][j]);
}
System.out.println("]");     }}
259デフォルトの名無しさん:2011/10/30(日) 05:32:38.85
>>258

> for(int k=0; k<j-1; k++){
二ヶ所ともj-1回ループ回さにゃいかんのにj-2回しか回ってなくね?
260デフォルトの名無しさん:2011/10/30(日) 10:38:12.44
>>258
>sum1 +=l[j][k]*l[j][k];
lじゃなくaじゃないの、とか
>l[j][j]=Math.sqrt(a[j][j]-sum1);
どう考えても sqrtの中身が負だろ、とか
根本的に考えなおしたほうがいい。プログラミングの問題じゃないような気がする。
261デフォルトの名無しさん:2011/10/30(日) 12:48:21.23
wiki の「コレスキー・バナキエヴィッツ法」ってやつ?
ttp://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%AC%E3%82%B9%E3%82%AD%E3%83%BC%E5%88%86%E8%A7%A3

少なくとも、「sum1,sum2 の初期化位置」と「i の初期値」は違ってそうだね。

for (int j = 0; j < a.length; j ++) {

  // L[j][j] を計算
  double sum1 = 0.0;
  for (int k = 0; k < j - 1; k ++) {
    sum1 +=l[j][k] * l[j][k];
  }
  l[j][j] = Math.sqrt(a[j][j] - sum1);

  // L[i][j] を計算
  for (int i = j + 1; i < a.length; i ++) {
    double sum2 = 0.0;
    for (int k = 0; k < j - 1; k ++) {
      sum2 += l[i][k] * l[j][k];
    }
    l[i][j]=(a[i][j] - sum2) / l[j][j];
  }
}
262デフォルトの名無しさん:2011/10/30(日) 13:03:52.55
>>258のダメなとこは
自身が全くわかってないだろう「コレスキー分解」という概念を
何の説明もなくそのままの用語で使うことに
何の疑問も抱けないあたりだな
263デフォルトの名無しさん:2011/10/30(日) 13:13:06.31
数学とか見る気にもならないんだけどプログラマ向いてないかな
264デフォルトの名無しさん:2011/10/30(日) 13:13:21.84
馬鹿の相手をするな
馬鹿が伝染るだろ
265デフォルトの名無しさん:2011/10/30(日) 14:06:21.53
String配列から重複なしでランダムに要素を取り出すにはどうすればいいでしょうか?
例えばString[] s = {"あ","い","う","え","お"};
とあった時、ランダムに
"あ","え","い","お","う" とか "え","お","あ","う","い" という風に取り出したいです
ただし配列のインデックスと文字の対応は崩したくありません
s[0]="あ"、s[1]="い" のままでってことです
266デフォルトの名無しさん:2011/10/30(日) 14:19:31.03
java.util.Random
267デフォルトの名無しさん:2011/10/30(日) 14:23:14.43
>>265
インデックスの配列を作ってシャッフルする
268デフォルトの名無しさん:2011/10/30(日) 15:21:32.57
デフォルトコンストラクタの役割って何ですか?良く分かりません。
コンストラクタは初期化に必要なものだとは分かりますが。
269デフォルトの名無しさん:2011/10/30(日) 15:27:55.84
初期化
270デフォルトの名無しさん:2011/10/30(日) 15:44:32.18
>>268
C++と違って、デフォルトコンストラクタに文法上の特別な便宜はたぶん無いよ。
271デフォルトの名無しさん:2011/10/30(日) 16:00:13.63
>>270
初心者さんちーす
272デフォルトの名無しさん:2011/10/30(日) 16:23:32.97
こんにちわ!
273デフォルトの名無しさん:2011/10/30(日) 16:24:48.28
ちーす
274デフォルトの名無しさん:2011/10/30(日) 17:10:08.19
>>270
こんにちは
275デフォルトの名無しさん:2011/10/30(日) 18:10:05.61
>>263
ばか乙
276デフォルトの名無しさん:2011/10/30(日) 19:57:11.65
Cloneableもいいけど、
コピーコンストラクタに配慮してくれる文法がJava言語にも欲しかったな。

なんか問題があって、あえてCloneableになったんだっけ?
277デフォルトの名無しさん:2011/10/30(日) 19:59:54.23
んー。イメージわかないな
例えばどんなことやりたいかコードで書いてもらえないか
278デフォルトの名無しさん:2011/10/30(日) 22:02:11.95
コンストラクタにprivateを付けると、クラス間でしかアクセスできなくなる
んですか?
279デフォルトの名無しさん:2011/10/30(日) 23:58:34.05
んだ
280デフォルトの名無しさん:2011/10/31(月) 00:17:13.97
んなこたーない
281デフォルトの名無しさん:2011/10/31(月) 00:24:34.43
クラス間じゃなくてクラス内だな
282デフォルトの名無しさん:2011/10/31(月) 00:27:40.28
んー。クラス内という理解で困ることは余りないけど、
正しくはないよ
283デフォルトの名無しさん:2011/10/31(月) 01:20:45.77
>>.282
正しい説をおねがいします
284デフォルトの名無しさん:2011/10/31(月) 13:56:25.03
亀だけど、vista以降は、ShiftJISで打ち込んでいいのか?

俺はXP使いだから知らんけど・・システム規定の文字コードで単純に保存じゃないの?
285デフォルトの名無しさん:2011/10/31(月) 14:03:11.36
D:\lab\Java> javac -encoding UTF-8 Test.java

http://d.hatena.ne.jp/akumakario/20080621/1214039807

286デフォルトの名無しさん:2011/10/31(月) 18:12:24.01
if(you instanceof Pritty)
((Pritty)you).run();
else you.walk();

についてですが、この場合何で(Pritty)のキャストが付くんですか?
youがif()内でtureだったらPrittyクラスなんだから
付けなくて良くないですか?you.run()じゃだめなんですか?
287デフォルトの名無しさん:2011/10/31(月) 20:07:43.57
ダメって決まってるからダメ。

他のスレッドがyouを書き換える可能性を否定できない、
とかイチャモンつけたりもできるな。
所詮イチャモンだけどな。
288デフォルトの名無しさん:2011/10/31(月) 20:20:47.11
>>287
キャストつけなかったらどうなるんですか?
javaの場合、参照の型のメソッドなりを返すから
つけなくてもいいんじゃ?
289デフォルトの名無しさん:2011/10/31(月) 20:30:28.41
> javaの場合、参照の型のメソッドなりを返すから
意味不明
290デフォルトの名無しさん:2011/10/31(月) 20:41:52.53
>>289
キャストつけるときってどんな時?
291デフォルトの名無しさん:2011/10/31(月) 20:44:38.93
キャストが必要な時。
292デフォルトの名無しさん:2011/10/31(月) 20:47:51.31
>>286
の場合必要ないでしょ
293デフォルトの名無しさん:2011/10/31(月) 20:48:27.03
言語仕様上必要な時。
294デフォルトの名無しさん:2011/10/31(月) 20:49:27.56
で、>>289の説明はないのか?
295デフォルトの名無しさん:2011/10/31(月) 20:51:06.87
>>294
オブジェクトがどのクラスにあるか分かるときは
キャストの必要なくないですか?
296デフォルトの名無しさん:2011/10/31(月) 20:51:30.89
>>295
>>289の説明になってないよね。
297デフォルトの名無しさん:2011/10/31(月) 20:52:41.47
>>295
プログラマだけが分かってても意味ないんじゃね?
298デフォルトの名無しさん:2011/10/31(月) 21:58:08.53
xの参照先がクラスPrittyのインスタンスであれば、xをPritty型への
参照型にダウンキャストした上でメソッドを行わなければならない?

良く分かりません。Prittyのインスタンスなのにダウンキャストする?
理解できん。何で?

299デフォルトの名無しさん:2011/10/31(月) 22:06:12.95
アーリーバインドするためだろJK
コンパイラさんの役割がまるで理解できてなさそうだな。
300sage:2011/10/31(月) 22:16:53.27
>>286
コンパイラが(you instanceof Prity)の結果を覚えていられないから
という理解じゃダメ?
if文の外でもキャストが必要なら、then部でもelse部でもキャストが必要。
301300:2011/10/31(月) 22:17:38.18
あぁ、sage間違えた。
302デフォルトの名無しさん:2011/10/31(月) 22:44:41.40
>>298
ところで、>>289で引用された部分の説明を一切しないのはなぜ?
303デフォルトの名無しさん:2011/10/31(月) 22:46:09.87
>>302
自分でも良く分からないから整理しただけ、>>289は忘れてください。
304デフォルトの名無しさん:2011/10/31(月) 22:50:14.54
>>300
キャストが必要な時ってどんな時ですか?
自分はキャスト=型を変換するって理解なんですがダメでしょうか?

例えばxはPrittyクラスなのに、(Pritty)xとキャストする意味が分からなくて・・
305デフォルトの名無しさん:2011/10/31(月) 22:53:55.13
staticメソッドやフィールドだと隠蔽があるからキャストしないと
どのメンバにアクセスするのか曖昧になる可能性があるな。
306デフォルトの名無しさん:2011/10/31(月) 22:54:52.84
>>304
分かってるならinstanceofする必要ないじゃん。
307デフォルトの名無しさん:2011/10/31(月) 23:00:15.72
if (x instanceof Pretty || x instanceof Kid) { /* ここでは x は何型として扱われるべき?*/ }
308デフォルトの名無しさん:2011/10/31(月) 23:01:12.95
>>305
すいません、変な部分だけ切り取って質問したんで・・
明快Java入門編の413pなんですけどね、見てくれたら分かると思います。
instanceofの説明が良く分からなくて・・
309デフォルトの名無しさん:2011/10/31(月) 23:02:39.16
>>308
買って送ってくれ。たぶん見たらわかると思うから。
310デフォルトの名無しさん:2011/10/31(月) 23:05:17.28
入力ファイルの英文から単語を読み込みたいので
空白や改行、タブを区切りとしてStringのデータを得たいのですが
何か良い手段はないでしょうか?
StringTokenizerやCharaceter.isWhitespaseやら試してみたのですが
この馬鹿には使いこなせない物だったらしくうまくいきませんでした
よろしくお願いします
311デフォルトの名無しさん:2011/10/31(月) 23:07:21.82
String#split(String)
312デフォルトの名無しさん:2011/10/31(月) 23:08:00.00
暗黙のうちにキャスト・・・っていう意味が良く分からない。
313デフォルトの名無しさん:2011/10/31(月) 23:08:28.73
どう試して
どううまく行かなかったか?
をまず示してもらわないと何とも。
314デフォルトの名無しさん:2011/10/31(月) 23:11:22.26
Prittyクラスは、Humanクラスかなんかのサブクラスじゃないの?
class Pritty extends Human
な感じで。

ついでに、>>286のyou変数は
Human you = new Pritty();
みたいに(Prittyから見た時の)スーパークラス型の宣言してない?

この時、you.run();とやっちゃうと、
Humanでrunメソッドを宣言してなければエラーだし、
宣言してればHumanのrunメソッドを使っちゃう。

どうしても、Prittyのrunメソッドを使いたい時に>>286みたいな書き方をする。
で良かったと思うけど。

明快Javaとか言う本は知らない。
315デフォルトの名無しさん:2011/10/31(月) 23:12:36.84
>>308
作者名で検索かけてメールだの本人主催の掲示板だので直接質問すればいいんじゃね?
316デフォルトの名無しさん:2011/10/31(月) 23:15:06.39
>宣言してればHumanのrunメソッドを使っちゃう。
インスタンスメソッドだったら、そんな事にはならんよ。
実際にはPretty#run()でなくてPrettyKid#run()呼ぶかもしれんけど。
317デフォルトの名無しさん:2011/10/31(月) 23:26:30.57
型推論やってくれって話か
318デフォルトの名無しさん:2011/10/31(月) 23:26:51.66
Eclipse Heliosを使ってプログラムしています

StringTokenizerで試した方のソースはこれです
http://ideone.com/t9uuL
これは単語をひとつも読み込めず
Result:
there is no word.
total : 0 words
とコンソールに出て終わってしまいました

FileReaderクラスのreadメゾッドでファイルから読み込みintからcharへキャスト演算子で変換するループを
(Character.isWhitespace(hoge) != true)をWhileの判定式に使って終了させるというのも試しましたが
こちらは空白で読み込みを終了できず失敗しました
319314:2011/10/31(月) 23:32:53.99
>>316
あれ、そうだった。

× Humanでrunメソッドを宣言してなければエラーだし、宣言してればHumanのrunメソッドを使っちゃう。
○ Humanでrunメソッドを宣言してなければエラーになっちゃう。

でいいのか。
320デフォルトの名無しさん:2011/10/31(月) 23:34:32.57
>>311
split(String hoge)のhogeを複数設定することは出来るのでしょうか?
321デフォルトの名無しさん:2011/10/31(月) 23:38:18.50
322デフォルトの名無しさん:2011/10/31(月) 23:45:04.56
>>318
catchWordが呼ばれてないような
323デフォルトの名無しさん:2011/10/31(月) 23:53:52.88
>>321
ありがとうございました

>>322
ありがとうございます
ここで聞く以前のミスですみません
直したら java.lang.IndexOutOfBoundsExceptionが47行目のwhile出でたのでそこも直してきます
324デフォルトの名無しさん:2011/10/31(月) 23:56:18.03
>>314
いやサブクラスのPritty型でnewでyouを宣言する設定で考えましたが。

明快Java入門の413ページなんで、良ければ見て教えてください。
この本ではPetがスーパーで、Robotpetがサブという設定ですが。
325デフォルトの名無しさん:2011/11/01(火) 00:18:00.81
>>324
コード貼れよ
いつまでだらだら続けるつもりだ
326314:2011/11/01(火) 00:19:54.88
やだ。自分で考えてください。

キャストしなくても結果が変わらなければ蛇足なキャストなんじゃない?
キャストしなけりゃ結果が変わるんなら何か意味のあるキャストなんでしょ。
327310:2011/11/01(火) 00:23:44.89
>>322さんのご指摘の後いくつかのエラーと格闘して無事解決しました
アホな質問に付き合っていただきありがとうございました
今後はこのようなことがないように気をつけます
328デフォルトの名無しさん:2011/11/01(火) 03:17:35.36
>>298
youはPritty型として宣言されてないでしょ、多分。
だからキャストしてあげる必要がある。
329デフォルトの名無しさん:2011/11/01(火) 03:25:16.79
youはPritty型として宣言されているんでしょ、多分。
だからinstanceofやキャストは必要ないんじゃないかと疑問を呈している。
330デフォルトの名無しさん:2011/11/01(火) 03:50:34.93
331デフォルトの名無しさん:2011/11/01(火) 07:32:51.82
>>326
キャストしなけりゃコンパイルエラー
キャストすればコンパイル通って実行もできる

なら意味があるんじゃね?
332デフォルトの名無しさん:2011/11/01(火) 08:07:03.38
ゆとり乙
333デフォルトの名無しさん:2011/11/01(火) 13:03:14.37
自作ライブラリ内で使用するデータの一部をシングルトンで定義しました。
そのライブラリを他のアプリでも使えるように修正中なのですが、
シングルトンを継承させるような感じで
動作を定義することって出来ないでしょうか?
334デフォルトの名無しさん:2011/11/01(火) 14:34:10.05
できます
335デフォルトの名無しさん:2011/11/01(火) 14:46:11.59
>>334
では提示してください
336デフォルトの名無しさん:2011/11/01(火) 17:03:15.08
まず定義したシングルトンを提示してください
337デフォルトの名無しさん:2011/11/01(火) 17:08:28.11
異次元の会話だな
338デフォルトの名無しさん:2011/11/01(火) 17:13:07.34
シングルトンをファクトリで生成するように変更。
ファクトリは設定ファイルを見てインスタンスを生成するように変更。
継承クラスを定義。
設定ファイルを継承クラスのインスタンスを生成するように変更。

とかすれば何とかなるんじゃね?
339デフォルトの名無しさん:2011/11/01(火) 18:08:44.35
Object o = map.get("hoge");
if (o instanceof Foo) {
  ((Foo) o).bar();
}

こういう場合ならキャストが必要なことに納得してくれるのかなぁ。
340デフォルトの名無しさん:2011/11/01(火) 18:13:04.15
>>333
継承したくなった時は移譲で実現可能かを検討しろ。
341デフォルトの名無しさん:2011/11/01(火) 18:38:48.68
338のやり方でやってみましたが、
いまいち分からなかったので
移譲する形でやってみます。
ライブラリの設定さえできればいいので、
呼び出す前に設定を渡す形にした方が簡単でした
342デフォルトの名無しさん:2011/11/01(火) 18:55:37.59
>>339
それジェネリックスつかってinstanceofできない時と未チェックでたときと実行時にClassCast例外出たときにパニクるんじゃないか?
343324:2011/11/01(火) 20:36:11.28
>>325
すいません、

配列で宣言していて、
普通に本ではPet []aみたいな感じでした。
中のa[i]=new PetRobotの右辺だけ見て判断してました。
すいません。 Pet A[]みたいなところ見逃してました。
自分のミスです。ちゃんとスーパークラスで宣言されてました。
ダウンキャスト必要ですよね。
344デフォルトの名無しさん:2011/11/01(火) 21:02:27.63
"UTF-8" "Shift-JIS" とかのファイル保存時のエンコーディングの文字列ってどこかに定義されてます?
345デフォルトの名無しさん:2011/11/01(火) 21:07:53.35
instanceof でオブジェクトの型を確認した後の分岐は(少なくともローカル変数に対しては)
そのブロック内にてその型でアクセスできることは明らかなのに、
なぜ型推論もされず、ダウンキャストがないとその型でアクセスできないの?

っていう話のはず
346デフォルトの名無しさん:2011/11/01(火) 21:44:59.43
要素がすべて埋まってしまった配列に新しい要素を足す処理を付けたのですが
arrayが既存のClass型の配列でelementが足す要素だとすると

Class[] newArray = new Class[array.length + 1];
for(int i = 0;i < array.length;i++){
 newArray[i] = array[i];
}
newArray[array.length] = element;
array = newArray;

という処理をいつもメソッドに書いているのですが
簡単にすることはできないでしょうか?
ちなみにListなどのクラスは使いたくないです。
347デフォルトの名無しさん:2011/11/01(火) 21:52:34.95
Class[] newArray = (Class[])org.apache.commons.lang.ArrayUtils.add(array, element);
348デフォルトの名無しさん:2011/11/01(火) 22:32:06.69
標準API縛りならArrays#copyOf(T[], int)で3行削れる。
349デフォルトの名無しさん:2011/11/01(火) 23:09:27.60
>>347-348
ありがとうございます。
個人的に>>348みたいなイテレータを使ったメソッドを真似て
自分でスタティッククラスとメソッドを実装したいのですが、
イテレーターというかジェネリクスというかよくわからないですが、
どんなクラスの配列でも引数にできるメソッドの作り方が乗ったドキュメントとか無いでしょうか?
350デフォルトの名無しさん:2011/11/01(火) 23:27:02.45
>>345
全く明らかじゃない。論理破綻しすぎだぞw
351デフォルトの名無しさん:2011/11/01(火) 23:29:01.22
>>349
わかってない単語を背伸びして使うのやめれ
バカにしか見えない
352デフォルトの名無しさん:2011/11/01(火) 23:46:42.35
>>349
久々にイミフ過ぎた
353デフォルトの名無しさん:2011/11/02(水) 01:56:32.56
>>349
ありますよ。
キーワードのヒントはジェネリクスとかイテレーターです。
これでグーグルエンジンでサーチすると、ジェネリックなクラスやインターフェースのコーディングのホームページがヒットします。
探せばイテレーターのメソッドをインプリメントしているようなサンプルソースをホームページでゲットできるかもしれません。

でもドキュメントをサーチしてきてコンテンツをもとにラーニングするよりも、
ArraysやArrayListのようなコレクションのジェネリクスクラスのソースコード中の
ジェネリクスのインプリメンテーションのイグザンプルをダイレクトにリファーした方がベターだと思います。
354353:2011/11/02(水) 02:14:48.13
>>349
アディショナル・インフォメーションですが、他にもMapインターフェースをインプリメントしたクラスのソースコードもリコメンドしておきます。

インターフェースMap<K,V>をインプリメントしているクラスで、
public V put<K key, V value)
public void putAll<Map<? extends K, ? extends V> m)
をどのようにインプリメントしているか見てみて、それをベースにトライしてみると、どんなクラスの配列でも引数にできるメソッドが作れると思います。
355デフォルトの名無しさん:2011/11/02(水) 02:23:41.06
ルー大柴か
356デフォルトの名無しさん:2011/11/02(水) 02:32:09.92
上の方見たけどこの板ってID無いから自演し放題だな
357デフォルトの名無しさん:2011/11/02(水) 03:20:44.56
ジーエンド
358デフォルトの名無しさん:2011/11/02(水) 04:50:10.98
>>356
いじめられたのかい?
359デフォルトの名無しさん:2011/11/02(水) 05:18:58.65
>>356
スルーできないお子ちゃまなのかい?早くおうちに帰りなさい。
360349:2011/11/02(水) 09:06:53.22
>>351-354
超絶暇人さんもご苦労様です。
ググる前になんとな〜く適当な単語並べて聞いただけなんで助言とかどうでもいいです。
死ねウンコ共。
361デフォルトの名無しさん:2011/11/02(水) 09:10:22.38
なんだこいつ?
雑魚ゆとり?(笑)
362デフォルトの名無しさん:2011/11/02(水) 14:19:14.13
このスレが質問スレとして機能する日は来るのか?w
363デフォルトの名無しさん:2011/11/02(水) 16:15:39.26
暗いと不平を言うよりもすすんで灯りをつけましょう
364デフォルトの名無しさん:2011/11/02(水) 16:22:38.37
365デフォルトの名無しさん:2011/11/02(水) 16:30:33.65
GoF以外のデザインパターンで、
使い勝手よさそうなものってある?
GoF以外の物を説明してるのほとんど見たことないから、
いいものがあるなら、教えてほしい
366デフォルトの名無しさん:2011/11/02(水) 21:43:34.55
転売用にAmazon自動予約スクリプト使いたいけど、パソコンの台数と、回線の数、どっちが大事?
367デフォルトの名無しさん:2011/11/02(水) 21:43:56.48
すいません、javaを趣味で勉強してるのですが、
あるStringが3行目以上あったら、表示を打ち切りたいのです。

if( message.replaceAll("[^<BR>]", "").length() >= 12){ //<BR>のみ残して、<BR>が3個以上あったら
for (int n = 0; count >=3; n++){
message.charAt(n);
if(★message().charAt(n).equals("<BR>")){
count++;
}
}
System.out.println(message);
}

ここまで頑張ったのですが、★のif文が解りません。。
どなたがご教授頂けませんか?
368デフォルトの名無しさん:2011/11/02(水) 21:48:49.09


javaでバイトコード
どうやって操作してるんだ?


だって、本家がそういう仕組みを提供してないのに
asmなどはどうやって操作してるのだ?




369デフォルトの名無しさん:2011/11/02(水) 21:51:15.66
確かに不思議だな
370デフォルトの名無しさん:2011/11/02(水) 22:01:40.17
なるほど
そういうことかよ
371デフォルトの名無しさん:2011/11/02(水) 22:06:22.29
医師臨床研修のマッチングシステムをgsアルゴリズムでつくろうと思うんですが、どなたか作った方いませんか?合コンのほうはできるのですが定員をどうつくればいいかわからないです。お願いします。
372デフォルトの名無しさん:2011/11/02(水) 22:15:52.61
>>368
message.charAt(n)って何のメソッドか分かってる?
一回生成されたStringは不変だからね?
メソッドを呼び出して文字列に何かしらの操作をしたら、
返り値のStringを見てみないと結果を見れないからね?
373デフォルトの名無しさん:2011/11/02(水) 22:16:37.42
>>367へだた
374デフォルトの名無しさん:2011/11/02(水) 22:17:40.10
宿題は宿題スレへ
375デフォルトの名無しさん:2011/11/02(水) 22:22:04.27
String[] s = message.split("<BR>");
int cnt=0;
for (String ss : s) {
System.out.println(ss);
cnt++;
if (cnt == 3) break;
}
376デフォルトの名無しさん:2011/11/02(水) 22:43:22.77
>>372
馬鹿が知ったか
低レベルの分際でw
377デフォルトの名無しさん:2011/11/02(水) 22:44:46.27
バイトコード操作の理解は
このスレのレベルじゃないだろ
本当に理解してる人は一握りの猛者のみ
あとはカスばかりだよ
378デフォルトの名無しさん:2011/11/02(水) 22:50:06.61
そんな深い分野を理解してる人なんていないだろ
雑魚ばかりですよ
せいぜいフレームワークの提供するAPIが使える程度
それさえも設定ファイルの書き方がわからずに嵌ってる土方PGばかりが集ってるw
379デフォルトの名無しさん:2011/11/02(水) 23:02:09.02
>>376
うるせー煽ってる暇があったらなんか話題振れハゲ
380デフォルトの名無しさん:2011/11/02(水) 23:03:39.45
>>378
そうですね
バイトコードが理解できる達人レベルなら
こんな糞スレには来ないでしょうから^^
381デフォルトの名無しさん:2011/11/02(水) 23:57:56.87
キャラクタセットの、x-JIS0208とShift_Jisってなにが違う?

x-JIS0208は、5の途中のバージョンから使える?
382デフォルトの名無しさん:2011/11/03(木) 01:46:56.55
Shift_JIS = MS932 ・・MS独自規格
JIS X 0208・・・日本工業規格
383デフォルトの名無しさん:2011/11/03(木) 01:57:38.02
こういう>>360みたいな頭が残念な子って
不思議と性根も悲惨なの多いね。
ワンレスで化けの皮が剥がれたり。
384デフォルトの名無しさん:2011/11/03(木) 02:01:58.25
>>376のピントのズレ具合が
385デフォルトの名無しさん:2011/11/03(木) 02:14:46.16
>>367
ご教授くんは日本語をまずなんとかしてくれ。ご教授って。。。
肝心のコードだな一行目からしてイミフ、動かんよそれ。for文もおわらんでしょ。charAtのAPI見直してこい。
などなど酷すぎて目が潰れそうだ。

なによりコンパイラ位使ったあとにに貼れ、と。
386デフォルトの名無しさん:2011/11/03(木) 04:43:11.57
こうるさいスレですね
387デフォルトの名無しさん:2011/11/03(木) 06:14:26.67
ここは「禿げ」か「雑魚」しかいない糞スレだからなw
388デフォルトの名無しさん:2011/11/03(木) 06:36:02.53
むかーしはこのスレもちゃんと機能してた時代があるんだぜ
389デフォルトの名無しさん:2011/11/03(木) 07:39:25.54
初歩すぎて申し訳ないが、1〜100が入った配列を楽に用意したい

int[] A;

for(int i=1;i<100;i++){
A=new int[i];
A[i-1]=i;
}

ではダメだよね?
どうすれば良いか教えてほすい


390デフォルトの名無しさん:2011/11/03(木) 07:43:09.45
>>389
説明不足すまん、最初にnew int[100]しないでいい方法が知りたい
391デフォルトの名無しさん:2011/11/03(木) 07:44:28.23
なにが発狂してんの?
392デフォルトの名無しさん:2011/11/03(木) 08:07:03.84
>>390
forの中でappendするってのはダメ?
あとはnumpy使うとか。
393デフォルトの名無しさん:2011/11/03(木) 10:17:36.72
>>390
それ楽になってないじゃん。
394デフォルトの名無しさん:2011/11/03(木) 10:52:46.64
1個ずつaddしていきたいのかな?
配列ではなくリストならそうするね
395デフォルトの名無しさん:2011/11/03(木) 11:22:49.69
楽に、以前にそれ満足に動いてないですやん
396デフォルトの名無しさん:2011/11/03(木) 11:27:23.47
配列なんて時代遅れ
今はListの時代
397デフォルトの名無しさん:2011/11/03(木) 11:31:54.51
398デフォルトの名無しさん:2011/11/03(木) 12:13:27.32
>>389
ver list = (1 to 100).toList
399デフォルトの名無しさん:2011/11/03(木) 12:29:47.71
byte[] b = new byte[]{1,0};

とあったとき、
0000000100000000
0000000000000001
のどちらをイメージすべきですか?
400デフォルトの名無しさん:2011/11/03(木) 12:34:27.52
>>399
こういうのが知りたいってこと?

0000 0000(2) 0(10)
0000 0001(2) 1(10)
0111 1111(2) 127(10)
1000 0000(2) -128(10)
1111 1111(2) -1 (10)
401399:2011/11/03(木) 12:43:38.09
>>400
違います。

b[0]の右側と左側どちらにb[1]があるのか、ということが知りたいです。
b[0]の最上位ビットの左側がb[1]の最下位ビットでしょうか
b[9]の最下位ビットの右側がb[1]の最上位ビットでしょうか
402399:2011/11/03(木) 12:44:24.91
訂正
× b[9]の最下位ビットの右側がb[1]の最上位ビットでしょうか
○ b[0]の最下位ビットの右側がb[1]の最上位ビットでしょうか
403デフォルトの名無しさん:2011/11/03(木) 12:49:20.61
ちんげ
404デフォルトの名無しさん:2011/11/03(木) 12:57:25.13
じゃあ、これで

0 0
0 0
0 0
0 0
0 0
0 0
0 0
1 0
405デフォルトの名無しさん:2011/11/03(木) 13:13:44.41
>>385
ご教授に噛みつく人何人か見かけるけど
別に間違ってるわけじゃないから。
間違ってるのは君の知識の方。
406デフォルトの名無しさん:2011/11/03(木) 13:17:11.59
屁がだた
407デフォルトの名無しさん:2011/11/03(木) 13:44:57.03
俺も教授の使い方は間違ってると思う。
間違ってる高卒が多すぎて、訳が分からなくなってるけど。
408デフォルトの名無しさん:2011/11/03(木) 14:20:00.32
>>405=>>367=高卒
409デフォルトの名無しさん:2011/11/03(木) 15:38:12.09
ま、人に物を頼む態度としては恥ずかしいな。どうでもいいだろうと言う言葉づかいは。
410デフォルトの名無しさん:2011/11/03(木) 16:24:00.97
お前に聞いてないから安心しろw
411デフォルトの名無しさん:2011/11/03(木) 16:30:54.46
>>401
ビッグエンディアンかリトルエンディアンかって話?
byte[]はどっちでもないよ。
java.io.DataInput DataOutput はビッグエンディアンだけど。
java.nio.Buffer は自由に指定できる。
412デフォルトの名無しさん:2011/11/03(木) 18:57:09.03
>>399
元素崩壊による半導体のソフトエラーの話なら、
メモリセル間でどんな誘爆パターンがあってもおかしくない。
413デフォルトの名無しさん:2011/11/03(木) 21:27:40.94
面白くないけど笑ってください
414デフォルトの名無しさん:2011/11/03(木) 22:10:45.35
IBM JDKで、permanent領域増やすのどうすればいいの?
415デフォルトの名無しさん:2011/11/04(金) 03:40:05.41
>>408
院卒だよ。
どこの病院かは教えてあげないけど。
416デフォルトの名無しさん:2011/11/04(金) 08:13:52.01
余計恥ずかしいことに気づけ
417デフォルトの名無しさん:2011/11/04(金) 08:56:53.11
>>399
おそらく 0000000100000000 じゃないのかな
でないと、b[1] のアドレスが b[0] より小さくなってしまってややこしい
リトルエンディアンなら 1000000000000000 かな
418デフォルトの名無しさん:2011/11/04(金) 10:43:21.92
>>417
ビッグエンディアンが1000000000000000で
リトルエンディアンが0000000100000000じゃないの?
419418:2011/11/04(金) 10:44:02.00
ああ違う、
ビッグエンディアンが0000000000000001だ
420デフォルトの名無しさん:2011/11/04(金) 10:47:40.34
Javaで簡単に使えるB木の実装ってない?
ASCIIの文字列入れれたらいいんだけど。
421デフォルトの名無しさん:2011/11/04(金) 10:49:21.24
B木ってなんぞ?
422デフォルトの名無しさん:2011/11/04(金) 11:08:29.16
>>421
ry
423デフォルトの名無しさん:2011/11/04(金) 15:14:47.08
>>385>>407
どうおかしいのか具体的な指摘が無いのでなんともだけど、
教授に「ご」をつけるのがおかしいっていう意図なら、教授するのは相手なので問題ないよ。
あとは…自分の知ってる教授の意味と違う!っていう意図ならもう一度辞書引いてみて。

どっかで聞きかじった知識なんだろうけど、生まれたての雛鳥じゃあないんだから
初めて聞いた知識をそのまま鵜呑みにするんじゃなく自分で正誤を確かめようよ。
指摘も具体的にしなくちゃ。そんなんだとプログラミングに携わる者として大成しないよ。
424デフォルトの名無しさん:2011/11/04(金) 15:19:41.58
×ご教授
○ご教示
425デフォルトの名無しさん:2011/11/04(金) 15:27:54.66
426デフォルトの名無しさん:2011/11/04(金) 15:43:54.76
>>399 をイーサネットに流すと 10000000 00000000 だ。
トークンリングに流すなら 00000001 00000000 だ。
PCI-Expressではどうなんだかよく知らん。

スイッチングハブやPCIブリッジを設計する人でもない限り、
LSBより先にMSBを知りたい、とかこだわる人はいない。
正直Javaプログラマにはどうでもいい。
427デフォルトの名無しさん:2011/11/04(金) 16:52:20.05
>>424
だからさ、それだと
×ご教示
○ご教授
と同程度の意味合いにしか読み手には伝わらないんだ。
もうちょっとがんばろう!ね!
428デフォルトの名無しさん:2011/11/04(金) 17:33:39.40
「汚名挽回」と同レベルの話
間違いだと言う人もいれば日本語として問題ないって人もいるから別にどうでもいい
429デフォルトの名無しさん:2011/11/04(金) 17:37:36.21
いやいやいやww
430デフォルトの名無しさん:2011/11/04(金) 17:45:15.45
なにこの糞スレw
431デフォルトの名無しさん:2011/11/04(金) 18:16:28.56
この糞スレっぷりで149まで行ってるのがすごいw
432デフォルトの名無しさん:2011/11/04(金) 18:18:18.83
ニート乙
433デフォルトの名無しさん:2011/11/04(金) 20:19:32.19
Javaの言語仕様や歴史的な経緯からの観点から
charAtメソッドの果たす役割とその価値を1年かけて体系的に教えて欲しい
ってくらいで「ご教授」になるかしらん。まだ足りないかな
434デフォルトの名無しさん:2011/11/04(金) 20:28:31.40
調べもせずに感覚でモノを言ってるなら、その辺でやめとけ。
435デフォルトの名無しさん:2011/11/04(金) 21:02:54.98
javaって文字列型って何バイトなんですか?
C言語だと'A'だけで1byteでしょ?

436デフォルトの名無しさん:2011/11/04(金) 21:41:06.87
>>427
どんなアホだよwww
437デフォルトの名無しさん:2011/11/04(金) 21:59:40.35
>>427
教授と教授の違いなんてググれよksg。いつまでもスレチなことやってんじゃねぇ。
438デフォルトの名無しさん:2011/11/04(金) 23:05:17.64
教授と教授にどんな違いかあるのかご教授願います
439デフォルトの名無しさん:2011/11/04(金) 23:08:02.67
高卒が増えれば「ご教授」が一般的になるかもしれんし、いいんじゃね?
もっと、堂々と「ご教授」を使おう!
440デフォルトの名無しさん:2011/11/04(金) 23:13:03.73
准教授
441デフォルトの名無しさん:2011/11/05(土) 00:31:36.97
>>423
恥ずかしい奴だ
442デフォルトの名無しさん:2011/11/05(土) 01:10:27.51
「どなたがご教授頂けませんか?」を否定されてレスしてる奴はそろそろ気づけ。そんな話をしに来たのかよw
443デフォルトの名無しさん:2011/11/05(土) 03:46:02.15
糞スレ保守
444デフォルトの名無しさん:2011/11/05(土) 03:53:12.33
外野がうるさいだけ
445デフォルトの名無しさん:2011/11/05(土) 03:56:59.96
class my implements Comparable<my>
{
int x,y;
public my(int a,int b)
{
x=a;
y=b;
}
public int compareTo(my arg0) {
if(x==arg0.x)
return y-arg0.y;
return x-arg0.x;
}
}
これが何をやってるクラスかどなたか教えていただけないでしょうか…
446デフォルトの名無しさん:2011/11/05(土) 07:08:54.73
質問が「何のためのクラスか」という意味なら、そこまでは分からない。

そのコードを見て分かるのは、せいぜいこの位。

 ・ 2つの int 値 x, y をプロパティとして持つ
 ・ そのクラスの大小比較に当たっては、y の大小よりも、x の大小の方が優先される

そうではなくて、「Comparableって?」とか「implementsって?」とか聞いてんだったら
人に聞く以前の問題だから、ggrk(ry
447446:2011/11/05(土) 07:40:54.75
さすがにこの説明だけだとピンとこないのかな。

例えば、3年x組 出席番号y番の生徒を

 new my(x, y);

で表す事にし、

 ymd = new my(3, 5);  // 3組5番の山田さん
 tnk = new my(1, 5);  // 1組5番の田中さん
 szk = new my(1, 8);  // 1組8番の鈴木さん

の三人から、生徒名簿に最も早く出現する人を探すとき、

 tnk.compareTo(ymd) < 0、かつ、tnk.compareTo(szk) < 0

つまり、「田中<山田」、かつ、「田中<鈴木」だから、答えは田中さんだ!

・・・みたいに使う。
448デフォルトの名無しさん:2011/11/05(土) 08:05:36.60
ちょっと何言ってるかわかんないです
449デフォルトの名無しさん:2011/11/05(土) 08:33:27.77
>>446>>447 親切にありがとうございます。
my[]p = new my[n];
for(int i = 0 ; i < n ; i ++)
{
nm = in.readLine().split(" ");
int x1 = Integer.parseInt(nm[0]);
int y1 = Integer.parseInt(nm[1]);
p[i] = new my(x1,y1);
}
Arrays.sort(p);

それをこんな風につかっているのですがpの中がどどう動いてるか
解説おねがいします。
450デフォルトの名無しさん:2011/11/05(土) 09:10:46.02
>>447
どうでもいいけど、斬新な命名規則だな。。。
自分は書き捨てコードでもMyFrameとかMyClassとかにしてるのに。。。

個人の自由だから別に良いけど
451デフォルトの名無しさん:2011/11/05(土) 09:42:54.91
452446:2011/11/05(土) 10:22:32.84
>>449
n = 3 だとして、山田さん、田中さん、鈴木さんの順に入力すると、
順に p の先頭から埋まっていく。

3人入力し終わったところで、何とびっくり!!
名簿の出現順(田中,鈴木,山田)に並び替わる。

並び替えは Arrays#sort() が、my#compareTo() の結果を元に行っている。
具体的にどうやって並び替えてるの?って質問は、
もうすこしおおきくなってからにしようね。

>>450
おいおい、おれは >445 に合わせてるだけなんだぜ?
453デフォルトの名無しさん:2011/11/05(土) 10:34:51.52
454デフォルトの名無しさん:2011/11/05(土) 11:00:57.33
ご教授について勘違いするスレでJavaの質問をするのはスレチでしょうか?
455デフォルトの名無しさん:2011/11/05(土) 12:06:36.96
Java 7 のリリース直後に騒がれたバグはもう治ったのか?
Solr では使わないでとか言ってた奴。
456デフォルトの名無しさん:2011/11/06(日) 00:32:56.34
Java3DのInterpolatorによるアニメーションで,
回転+移動や,移動+スケール変更など,2つ以上の動きを同時にさせるにはどうすればいいでしょうか?

2つの動きをシーングラフに追加したり,
TransformGroupを個別に用意したりしても,
片方が優先されてしまいます.
457デフォルトの名無しさん:2011/11/06(日) 01:26:48.68
>>455
言ってた奴だね。
458デフォルトの名無しさん:2011/11/06(日) 02:35:13.67
>>452
親切にありがとうございます。
なぜyよりxの大小が優先されるのですか?
459デフォルトの名無しさん:2011/11/06(日) 02:42:06.01
ワラタ
460デフォルトの名無しさん:2011/11/06(日) 08:30:45.77
ワロタ
461デフォルトの名無しさん:2011/11/06(日) 08:53:13.11
ワラタ...
462デフォルトの名無しさん:2011/11/06(日) 09:27:00.31
>>456
Transform3D 同士でをかけ算すればいいんじゃないかな
463デフォルトの名無しさん:2011/11/06(日) 10:49:24.85
Swingを利用したいのですが、どんなパッケージライブラリを選べばいいでしょうか?
464デフォルトの名無しさん:2011/11/06(日) 11:26:13.25
swing
465デフォルトの名無しさん:2011/11/06(日) 12:05:28.69
466デフォルトの名無しさん:2011/11/06(日) 17:16:38.61
>>462
Transform3Dによる回転や移動を,Interpolatorクラスでアニメーション表示させることは可能なのでしょうか?
467デフォルトの名無しさん:2011/11/06(日) 17:18:35.04
InputStreamってカーソルを戻して最初から読み直すことできないの?
468デフォルトの名無しさん:2011/11/06(日) 17:41:19.87
できますん
469デフォルトの名無しさん:2011/11/06(日) 18:13:18.97
>>467
InputStreamのjavadoc読んだ?
470デフォルトの名無しさん:2011/11/06(日) 19:15:42.99
質問に質問で返すのはやめたまえ君
471デフォルトの名無しさん:2011/11/06(日) 19:17:36.21
紋切り型に質問に質問で返す扱いすることこそやめたまえ君
472デフォルトの名無しさん:2011/11/06(日) 19:39:10.34
473デフォルトの名無しさん:2011/11/06(日) 19:41:51.69
>>467
mark(int) reset() ぐらいしか。

素直にもう一回開きなおすか、
どこかに貯めておいてそっちから読み込む方が楽っちゃ楽。
474デフォルトの名無しさん:2011/11/07(月) 12:49:34.25
複数スレッド作って負荷のかかる処理やらせてみても
タスクマネージャで1コアしか負荷が発生していない
なんでだろう?
各スレッド開始時にprintln()してるから複数スレッド走ってるのは間違い無いし
処理内容は全部一緒なんだけど
475デフォルトの名無しさん:2011/11/07(月) 13:18:41.57
同期してる箇所はあるか?
IOが時間喰ってないか?
もっとスレッド数を増やしたらどうなる?
476474:2011/11/07(月) 13:49:44.23
同期は無い
IOはあるが1コアに負荷が集中する理由にはならない
スレッド数は4コア8スレッドのマシンで8スレッド作ってるからこれ以上増やす意味は無さそう

JVMオプションに使用可能なコア数を指定できたりしないかと思って検索してみたけど見当たらず
たぶん、何スレッドあっても1コアで処理するような設定になってしまってる。どこかで。
477デフォルトの名無しさん:2011/11/07(月) 14:01:45.54
スレッドダンプ取ってみたら。
478474:2011/11/07(月) 14:11:30.25
t.run()

t.start()
の違いがわかってなかった!
479デフォルトの名無しさん:2011/11/07(月) 14:14:36.87
動違うの?
480デフォルトの名無しさん:2011/11/07(月) 14:24:16.44
>>467
何読んだか覚えているんならPushbackInputStream使え。
481デフォルトの名無しさん:2011/11/07(月) 14:55:42.33
違いっていうか自分で実装したrunを普通に同期的に呼んでることになるな
482474:2011/11/07(月) 20:50:14.02
なるね
483デフォルトの名無しさん:2011/11/08(火) 00:01:20.97
そういうオチか
484デフォルトの名無しさん:2011/11/08(火) 00:21:13.46
うん
485デフォルトの名無しさん:2011/11/08(火) 08:57:53.25
JavaでDBの1レコードを表すクラスを考えます。
テーブルには各種制約(not null, unique, referenceなど)があるのですが、
Java上にこれらの制約を持ち込むのはマズいのでしょうか。
特にそういうのを気にせずにSQL投げてSQLExceptionが発生したら対処するパターンはよく見るのですが。

制約を持ち込んだ場合の利点としてはアプリ側で更新できないものを前もって判別できる、
欠点は制約内容の確認のために1回以上のSELECTが発生する、DBの制約を変更するたびにJavaソースも変更されるところかなと考えてます。
486デフォルトの名無しさん:2011/11/08(火) 11:27:54.40
え?
487デフォルトの名無しさん:2011/11/08(火) 11:36:00.41
>>485
>Java上にこれらの制約を持ち込むのはマズいのでしょうか。

この、「Java上にこれらの制約を持ち込む」というのが、
Java上でどういったことをすることを意味しているのかがわからないんだが。
488デフォルトの名無しさん:2011/11/08(火) 12:25:58.49
daoにassertかくくらいならたまにみかける。
でもエラー検出したとこでなにかできるわけじゃないしな。
489デフォルトの名無しさん:2011/11/08(火) 12:41:40.24
結局同じこと(同じデータの制約)の定義を
違う場所(スキーマとJavaのソース)に二つ書くことになるから、
色々問題が生じる。

典型的には制約を変更を加えた場合、
両方を書き換えなければならなくなる。
SQLException で処理していれば、スキーマだけ書き換えれば済む。
(もちろん、いずれにしても結合テストは、変更、再実行が必要になる)
490デフォルトの名無しさん:2011/11/08(火) 13:09:00.94
>>487
DBで制約として定義されている内容をJava側でもチェックする感じです。
制約が原因となるSQLの例外が出ない状態までvalidateする実装になると思います。

O/R マッパーなどでテーブル間の関係(1:nとか)をJavaに持ち込むのはよく見ますが
制約についてはみないなと思ったのが質問のきっかけです。
491デフォルトの名無しさん:2011/11/08(火) 14:28:35.07
>>490
ORマッパは、DBのテーブルの関係を Java に「持ち込む」というより、
むしろ、「持ち込まない」ためのツールだと思うけどな。

データ保持の都合で設計されたデータベースのテーブルと、
Java の処理の都合で設計された Java のクラスを、
それぞれにとって都合の悪いことを
(なるべく)「持ち込まずに」対応づけられるようにするのが、
ORマッパの目的でしょ。
492デフォルトの名無しさん:2011/11/08(火) 14:32:29.32
そもそもORマッパは良くない
生SQLが良い
493デフォルトの名無しさん:2011/11/08(火) 15:10:13.76
まっぱ!まっぱ!
494デフォルトの名無しさん:2011/11/08(火) 20:23:08.68
>>488-489,491
ありがとうございます。
やはり制約を持ち込むのはNGですね。
491さんの「持ち込まない」という説明がとてもしっくりきました。

お忙しいところレスいただきありがとうございました。
495デフォルトの名無しさん:2011/11/08(火) 21:51:03.58
これからプログラム(Java)の勉強をはじめようと思って
いま jdk-7u1-windows-i586.exe をDLしてきました。

使っているのはWindow XPです。
いまJavaのアプリケーションは動いています。

プログラムの追加と削除のところに
J2SE Runtime Environmenr 5.0 Update 10
J2SE Runtime Environmenr 5.0 Update 6
Java 2 Runtime Environmenr SE v1.4.2_12
Java(TM) 6 Update 23
というのがあります。

それでjdk-7u1-windows-i586.exeをインストールする前に
上記の4つを削除する必要がありますか?
削除した場合、jdk-7u1-windows-i586.exeをインストールすれば
前と同じように今使っているJavaのアプリケーションは動きますか?
496デフォルトの名無しさん:2011/11/08(火) 22:22:12.85
削除の必要があるかないかといったらないんだけど、
既知のセキュリティホール放置する事になるので削除を推奨する。

今までのアプリはたぶん動くけど、
特定バージョンに依存してる可能性もあるので絶対じゃない。
497デフォルトの名無しさん:2011/11/08(火) 22:40:55.97
winxpは2001年頃のだから10年経っても普通に現役なんだよね。
win95,win98は2005年頃に消滅したから10年しかもたなかってけど、xpはまだ5年はもつつまりjdk8でもサポートするんだろうね。
ubuntuは日本語も完全に整備されてるしideもあるから既にubuntu環境に移行したからwindows platなんてどうでもいいけど。
498デフォルトの名無しさん:2011/11/08(火) 23:51:14.50
つか、JDK要るの? JREでいいんじゃないの?
499デフォルトの名無しさん:2011/11/09(水) 03:34:40.12
Eclipse動かすだけならいらないけどね
Android環境入れたいのかもしれないし
500デフォルトの名無しさん:2011/11/09(水) 10:00:24.86
すごーいね
501デフォルトの名無しさん:2011/11/09(水) 14:17:50.22
もう少し褒めてください
502デフォルトの名無しさん:2011/11/09(水) 15:08:39.86
なんでinterfaceでstaticなメソッドを宣言できないんですか?
なんでinterfaceのメソッドをstaticなメソッドで実装できないんですか?

ユーティリティークラスみたいなものを外部から与えてもらいたい時にどうしたらいいですか?
staticなメソッドを宣言したinterfaceが書ければ実装は外部から渡してもらうという事が出来ます。
503デフォルトの名無しさん:2011/11/09(水) 15:18:14.07
素直にimport staticしろ。
504デフォルトの名無しさん:2011/11/09(水) 15:18:25.48
>>502
ヒント:インターフェースは実装するためのもの
505デフォルトの名無しさん:2011/11/09(水) 15:37:39.29
>>501
例えばそれができたとして、

public interface InterfaceA {
static void MethodA();
・・・
public class ClassA implements InterfaceA {
public static void MethodA() {
・・・
}

とかした場合、呼び出し元では、 MethodA() をどうやって呼び出すの?
506502:2011/11/09(水) 15:55:37.29
>>505
俺へのレスかな

public void proc(InterfaceA util){
util.MethodA();
}

public static void main(String args[]){
proc(new ClassA());
}

これでClassA.MethodA()が呼び出されれば良いと思う。
interfaceじゃなく継承とオーバーライドで同じ事を試すと、
継承元のメソッドしか呼ばれない。(メソッドシグネチャに書かれた型が呼ばれて、渡されたオブジェクトの型は関係しなくなる)
507デフォルトの名無しさん:2011/11/09(水) 16:04:24.42
>>506
その使い方なら、メソッドが static 呼び出しである必要はなんかあるの?
インスタンス作らなきゃならないなら、
通常のメソッドでも何も変わらんと思うけど。

508502:2011/11/09(水) 16:08:34.83
>>507
他のプロジェクトで使われてるstaticなユーティリティークラスを受け取って
その機能を使うにはどうしたらいいか
複数種類あって、実装は外部のプロジェクト任せでinterfaceしか分からないという場合

俺の結論としては、staticクラスをラップしたクラスを作るって事になった。
509デフォルトの名無しさん:2011/11/09(水) 16:16:39.86
っつか、言語仕様まるまるとっかえないと
実装先でstaticメソッド宣言してもinterfaceのstaticメソッドを隠蔽するだけで上書きできんよ?
510デフォルトの名無しさん:2011/11/09(水) 16:17:59.17
まんこ
511デフォルトの名無しさん:2011/11/09(水) 16:36:21.40
>>508
「〜という場合」、というけど、今の Java の仕様では、そもそも、
そういう場合というのがありえないわけだから、対応する必要もないのでは?

「やりたいこと」と「解決すべき問題をかかえた現状」をごっちゃに語ってないかい?
512502:2011/11/09(水) 16:43:09.87
>>511
なぜJavaがこういう仕様になっているかの説明を聞いて、他の実装方法を思いつければと思っていた。
でも結局、staticなユーティリティークラスを使っているのは、
主にインライン展開を期待したパフォーマンス上の理由なので
staticクラスのままで、必要な時だけラッパーを使うという形が妥当だと思った。

俺がこの件に関して持った認識はそれだけ
513デフォルトの名無しさん:2011/11/09(水) 16:48:53.06
crack up to the heaven
514デフォルトの名無しさん:2011/11/09(水) 16:55:47.21
JITコンパイラによるインライン展開の対象にはインスタンスメソッドも含まれる。
(というか、staticメソッドを特別扱いしない)
javacはstaticメソッドだからといってインライン展開したりしない。
515デフォルトの名無しさん:2011/11/09(水) 17:04:22.53
apiの呼び出しの型(インターフェイス)がわかっている

→ジャヴァの interface を使ってみよう!! という発想?
516デフォルトの名無しさん:2011/11/09(水) 17:06:15.25
>>512
>なぜJavaがこういう仕様になっているかの説明を聞いて、他の実装方法を思いつければと思っていた。

いや、だから、なぜ、「他の実装方法を思いつ」く必要があったの?

自分の認識では、 単に Interface に static メソッドを定義できるようにしても、
それに整合するように他の部分の仕様を変えていくと、
>>506
のようになってしまい、最終的に satatic ではないメソッドとの相違点がなくなってしまうから
実装以前に言語仕様的に無意味だとしか思えない。
(だからそのような仕様になっていないのは当然と思える)


517502:2011/11/09(水) 17:18:50.52
>>516
俺が今つくってるものを実装しなきゃいけないから実装方法を思いつく必要があった
518デフォルトの名無しさん:2011/11/09(水) 17:30:42.45
519デフォルトの名無しさん:2011/11/09(水) 17:53:52.68

@Before
public void setUp()
{
obj = new MyObject();
obj.setWhatImReading( new Book( "Java 2 From Scratch" ) );
}

こんなふうに@Beforeとか@TESTみたいに@の付いコードの意味はなんでしょうか?
520デフォルトの名無しさん:2011/11/09(水) 17:56:52.50
>>519
アノテーション
身も蓋もない言い方をすれば、リフレクションするときの目印
521デフォルトの名無しさん:2011/11/09(水) 17:57:03.81
アノテーションでぐぐれ。
522デフォルトの名無しさん:2011/11/09(水) 18:29:48.94
java6のjavadoc日本語版ってどこでしょか
ダウンロードできるやつ
7はありませんよね?
523デフォルトの名無しさん:2011/11/09(水) 18:37:31.01
524デフォルトの名無しさん:2011/11/09(水) 19:14:10.45
>>520,521
勉強になります
どうもありがとうございます
525デフォルトの名無しさん:2011/11/09(水) 20:44:07.40
private ArrayList<String> locationCells;

public void setLocationCells(ArrayList<String> loc) {
locationCells = loc;
}

本来だと一行目はArrayList<String> locationCells = new ArrayList<String>();だと思うのですが、
newされずに使われてるのはどうしてなんでしょう?
526デフォルトの名無しさん:2011/11/09(水) 21:02:20.27
初期状態はnullにしたかったんだろ
527デフォルトの名無しさん:2011/11/09(水) 21:03:52.34
setLocationCells() は呼び出し元で
new された ArrayList<String> のオブジェクトを、
locationCells にセットするためのメソッドだから。
528デフォルトの名無しさん:2011/11/09(水) 22:27:46.73
DBと連携しつつも同時に大量の処理をさせたいと思った場合、もっと良い方法はありますでしょうか?
現在はorder,agent,reporterといった3つのスレッドで処理してます

order thread
・DBより作業要求を取得
・スレッドプールでagent threadを動かす

agent thread
・要求を受けて処理実施
・結果をreporterに渡すためにConcurrentLinkedQueueにpush

reporter thread
・ConcurrentLinkedQueueよりpoll
・DBに結果を保存
529デフォルトの名無しさん:2011/11/09(水) 22:43:32.22
orderスレッドが、スレッドプールでagentスレッドを動かす
のはないな。あれこれやりすぎ。
530デフォルトの名無しさん:2011/11/09(水) 22:45:27.04
>・DBより作業要求を取得
で、orderという命名はないな
531デフォルトの名無しさん:2011/11/09(水) 22:46:24.09
reporterスレッドは、たぶん価値ないな。
動かしてみないと何ともいえないが。ボトルネックにはならんでしょ。
532デフォルトの名無しさん:2011/11/09(水) 22:55:05.69
これ、なんで並列に処理しなきゃなんないの?
要求が Web から来るとかなら分かるんだけど、
DBにプールされてるなら、逐次処理してもかまわなさそうな気がするけど。
533デフォルトの名無しさん:2011/11/09(水) 23:41:37.96
orderはagentに指示(命令)して動かすものってだけで命名してます
(DBからタスクを取得してagentへ渡す)

当初これを別のシステムで作っていたのだが
・同時かつ大量に処理させたい
・agentで実行される処理時間が異なる(数秒から数十分)
・決められた時間内で終わらせる
という理由がありましたのでこれを作りました

reporterはorderと統合もできたのですが、
役割を明確にするためにも分離しました

コードを書いたのが2年以上前で同様の処理をさせたい案件が最近出てきたので
もっといい案があればとご高説は承りたく質問いたしました
534デフォルトの名無しさん:2011/11/09(水) 23:50:16.49
え?
535デフォルトの名無しさん:2011/11/09(水) 23:57:32.74
536デフォルトの名無しさん:2011/11/10(木) 00:17:58.18
>>533
命名センスが致命的に欠落してることはわかった。
司令だすからorderって、あんたそれじゃ全部のクラスがorderになるわ。
537デフォルトの名無しさん:2011/11/10(木) 00:22:32.56
> ・DBより作業要求を取得
って要約したくなるようなクラスに
> rder thread
って命名する時点でおわってるってことね。

どうせゴミみたいな設計なんだから、1日くらいかけて再設計・実装しなおせよ。
538デフォルトの名無しさん:2011/11/10(木) 01:16:59.27
文字列の文字コードをUnicode(UTF-8?)からShift-JISに変換した時、
全角の〜(から)や−(ハイフン)、NEC特殊文字などが?(ハテナ)になります
どうすれば文字化けさせずに文字コードを変換できますか?
539デフォルトの名無しさん:2011/11/10(木) 01:18:25.73
まず「?」をとれ。話はそれからだな。
540デフォルトの名無しさん:2011/11/10(木) 01:22:43.44
ああ、元の文字コードのところの?(ハテナ)ですね?
Javaのデフォルトの文字コードです
541デフォルトの名無しさん:2011/11/10(木) 01:23:14.54
つまり?
542デフォルトの名無しさん:2011/11/10(木) 01:27:17.66
うーん、UTF-8でしょうか・・・?
とにかくそれをShift-JISにしないといけないのです
そうしないと出力したファイルをEXCELで開いたときに文字化けするのです
543デフォルトの名無しさん:2011/11/10(木) 01:30:57.03
だから>>539だな。自分が何してるかすら理解せずに、どうやって問題を解決するんだか。
544デフォルトの名無しさん:2011/11/10(木) 01:36:21.06
すみませんでした
ちょっと調べてみます
545デフォルトの名無しさん:2011/11/10(木) 01:37:01.54
俺が浅知恵化も知れないけど
確か「〜」「−」とかは文字化けしちゃうから
replaceで類似文字に変換するべきだったはず
546デフォルトの名無しさん:2011/11/10(木) 02:33:00.15
>>536-537
センスうんぬんは分かってます
だからこそ実装方法について質問しているのですが…
547デフォルトの名無しさん:2011/11/10(木) 02:50:56.97
回答ほしいなら別のスレ行った方がいいよ。ここはアホしかいないから
548デフォルトの名無しさん:2011/11/10(木) 02:55:41.28
おかしなネーミングをまっとうにしていく過程で良い設計が見えてくるよ。

言葉尻とらえるみたいだけど、
実装方法がダメなんじゃない。設計がなってないんだ。
もっというと、要件>>533の整理の仕方がなってない。必然的に伝え方もなってない。
> 決められた時間何に終わらせる
ってなーに?決められた時間が来たらどうすりゃいいのさ?これで伝わると思う方がどうかしてる。
549デフォルトの名無しさん:2011/11/10(木) 03:09:22.30
>・同時かつ大量に処理させたい
こんなのが理由なわきゃねえ、そりゃ手段だよ。あってるかどうかも怪しい浅知恵かもしれん。
とりあえず>>532に答えて、今のクラス構成の必然性を説明できるようにしないとね。
で、おそらくそれを試みると今の設計の贅肉が見えてくる。
550デフォルトの名無しさん:2011/11/10(木) 03:29:52.08
>>548-549
要件についてはまず申し訳ありませんでした
具体的に書くとまずい部分もあったので大分濁したの結果、分かり辛くなってしまいました

ちなみに大量というのは後に数千単位のオーダーを数分おきに実行する事が予想されるので
あらかじめそれを考慮した設計をしておきたかった為です
(数秒から数十分ってのは過去の実装時で、今回は1秒未満から長くとも10秒の予定)

決められた時間内に終わらせる
→短時間で繰り返し行わせる予定となっているからです
 規定値を超えた場合は失敗したものとして終了報告させる予定です

このコード自体は昔のも趣味で作ったものなのですので、この方法を採用するかも未定なので
実装方法については再度検討します

また行き詰った際には質問をさせて頂くかもしれませんが、その時はよろしくお願いします
遅くまで質問に答えていただき、ありがとうございました
551デフォルトの名無しさん:2011/11/10(木) 08:19:29.11
>>538
windows-31jとかms932使えって話でなくて?
552デフォルトの名無しさん:2011/11/10(木) 08:58:56.14
3Dゲームの行列計算するクラスを5段階で継承したらもうわけわかめ状態で死にたい…。
553デフォルトの名無しさん:2011/11/10(木) 09:30:18.92
>>550
いずれにしても並行処理させなきゃいけない理由がわからない。
その要件を見る限り、どうしても並行処理させる必要があるのは、
要求を受け付ける処理だけのはず(取りこぼしを防ぐため)。

一旦要求をDBに入れた後は、逐次取り出して処理し、
所定時間を経過した要求はエラーにする、という処理の仕方をしても、
複数のスレッドに処理を分配しても、1つのCPUで処理する限り、
単位時間内に処理できる要求の数はさして変わらないはず。
(マルチスレッドにした分、処理効率が少し下がる可能性も大きい)

もちろん、マルチコアや分散処理で処理効率を上げようとしているなら
話は別だけど、その場合は、構成の是非の判断材料は、
その処理効率を上げるための戦略やシステム構成であって、
それが示されてないとアドバイスのしようがない。
554デフォルトの名無しさん:2011/11/10(木) 13:52:02.17
じゃあ矯正しようか
一年間継承禁止、インターフェースだけ使う
555デフォルトの名無しさん:2011/11/10(木) 16:04:20.54
昨夜、文字化けについて質問した香具師ですが、
SJISではなくWindows-31Jにしたら文字化けがなくなりました。
次の課題としては、JavaMailに機種依存文字を使うのがあります。
UTF-8にすれば一発ですが、どうにかしてISO-2022にしたいです。
どうやればおkですか?
556デフォルトの名無しさん:2011/11/10(木) 16:12:26.09
自作クラスのメソッドを使う時に、
ついつい戻り値があるのにvoidと勘違いして変数に代入するのを忘れてしまいます。
アノテーションの@Overrideを付けるとオーバーライドしなかったら警告を出してくれるみたいに、
変数に代入しなかったら警告を出すようにすることはできないでしょうか?
557デフォルトの名無しさん:2011/11/10(木) 18:08:38.92
それがミスかどうかは使う人の意図次第だから無理がある
戻り値を使わないこともある
558デフォルトの名無しさん:2011/11/10(木) 18:17:36.75
そもそも何か仕事をしてほしいとか結果が欲しいとか目的があって
メソッド呼ぶんだろ?
その上で戻り値忘れてたってことは戻り値はその目的上要らなかったってことだろ?
じゃあ戻り値無視しても問題ないじゃないか
C言語のエラーコードじゃあるまいし
559デフォルトの名無しさん:2011/11/10(木) 18:22:11.73
eclipseでjava7使うとコード補完で死にまくるな。
補完候補出すタイミングでビジーになってそのままプロセス殺す
しかなくなるから保存してない変更はパーになる。
hotspotバグの影響があると顕著に出るな。
560デフォルトの名無しさん:2011/11/10(木) 18:48:17.09
うん
561デフォルトの名無しさん:2011/11/10(木) 20:08:42.84
デビルサバイバーオーバークロックで
逆引き悪魔合体表を作ろうかと思うんですが、
どのくらいの修練積めば、プログラミングできるようになりますか?

javaはまだ始めて5日です。
562デフォルトの名無しさん:2011/11/10(木) 20:10:05.22
うん
563デフォルトの名無しさん:2011/11/10(木) 20:15:24.76
>>557-558
値を計算するスタティックメソッドを作ってるだけであって、メソッドの本質なんて聞いてません。
無いならないでいいです。
564デフォルトの名無しさん:2011/11/10(木) 21:21:12.63
>>556
自前のアノテーション定義して、
Compiler Tree API使って
そのアノテーションがついたメソッドが
代入式の右側以外で使われてたら警告出すようにする、とか?
565デフォルトの名無しさん:2011/11/10(木) 21:30:34.29
どうやったら値を計算するスタティックメソッドの戻り値をわすれるんだよw
566デフォルトの名無しさん:2011/11/10(木) 21:39:02.94
out引数の真似事でもしてればいいよもう
567デフォルトの名無しさん:2011/11/10(木) 21:41:27.36
public static int calcValue() {・・・}
・・・
int value;
・・・
calcValue();
・・・
print value;

あれ?value の値がおかしいぞ?
・・よく見たら、「value = calcValue();」とするはずが「calcValue();」って書いちゃってた、
「value = 」を忘れないためにはどうしたらいいんだろう?

みたいなことが言いたいのかな?
でもワーニングチェックすれば事足りるよな・・・。
568デフォルトの名無しさん:2011/11/10(木) 22:10:00.28
double value = 3.14;
Math.cos(value);
System.out.println(value);

これで角度が求めれるはず…。
>3.14
あれ?みたいな?
569デフォルトの名無しさん:2011/11/10(木) 22:18:21.52
うーん
570デフォルトの名無しさん:2011/11/10(木) 22:36:29.04
571デフォルトの名無しさん:2011/11/10(木) 22:44:19.36
まーん
572デフォルトの名無しさん:2011/11/10(木) 22:49:54.97
573デフォルトの名無しさん:2011/11/10(木) 23:13:57.68
検査例外使えばいい
void keisan(int x) throws ReturnValue<Integer>
みたいな
574デフォルトの名無しさん:2011/11/10(木) 23:38:18.26
自作クラスのメソッドを使う時に、
ついつい戻り値があるのに戻り値を代入した変数を使うのを忘れてしまいます。
アノテーションの@Overrideを付けるとオーバーライドしなかったら警告を出してくれるみたいに、
戻り値を代入した変数を使うのを忘れたら警告を出すようにすることはできないでしょうか?

575デフォルトの名無しさん:2011/11/11(金) 00:44:28.22
その後。。。

教えていただいたアノテーションで検出出来るようになりました。
そのアノテーションをつけ忘れてしまうことに気づきました。
「戻り値を代入した変数を使い忘れた場合に警告を出すアノテーション」をつけ忘れた時に警告を出すようにすることは出来ないでしょうか?

さらにその後のその後。。。

プログラムを書くのを忘れてしまうことに気づきました。
プログラムを書き忘れた時に警告を出すようにすることは出来ないでしょうか?
576デフォルトの名無しさん:2011/11/11(金) 00:52:38.87
全行「これで本当にいいの?」って警告出すコンパイラーを作れば…
577デフォルトの名無しさん:2011/11/11(金) 01:11:13.65
1だらけ
578デフォルトの名無しさん:2011/11/11(金) 01:51:55.23
checkstyleやPMDといったコード診断ツールなら
自作のコーディングルールを追加することもできるので、
「戻り型が非voidなメソッドの戻り値は評価されなければならない」
ぐらいは自動検出できるはず。
579デフォルトの名無しさん:2011/11/11(金) 02:37:25.94
例えば、コレクションのremoveやsetは以前の値を返す設計になってるから
すごいことになりそうだね
580デフォルトの名無しさん:2011/11/11(金) 05:37:12.73
未使用のローカル変数大量だな
581デフォルトの名無しさん:2011/11/11(金) 08:18:12.31
コンストラクタの中で自クラスをnewすると無限ループするんですか?
582デフォルトの名無しさん:2011/11/11(金) 08:50:24.57
>>581
5分で試せるようなことは、人に聞くよりやったほうが早いぞ。
583デフォルトの名無しさん:2011/11/11(金) 09:00:53.39
>>581
一度書いて試してからものを言え。
584デフォルトの名無しさん:2011/11/11(金) 10:40:35.46
おースタックオーバーフローエラー出た
どうも
585デフォルトの名無しさん:2011/11/11(金) 11:01:18.37
JavaのプラグラムをC言語に変換できるソフト無いですか?
僕はゆとりで、Javaは覚えましたがC言語は覚えてません。
課題のプログラムのソースをC言語で出せとゆとりの僕に不可能な無茶ぶりをされました。

色々試しましたが折角、英語を訳したり、意味不明なソフトをたくさんインストールしたのに
拡張forをバンバンに使ってるのに古すぎて拡張forに対応していなかったりとか
マイナーなUnixオンリーでCygwinもMingwも使えなかったりとか
説明書通りにやっても全くファイルが出力されないとか誰得なソフトばかりです。

C言語と文法が似てて15年も歴史があるJavaですし、
まさかCへ翻訳という至極簡単な処理をするソフトが無いわけ無いですよね。

崇高寛大な知識人たる団塊の世代の皆々様のお力添えを承りたく存じます。(^_^)v
586デフォルトの名無しさん:2011/11/11(金) 11:15:16.51
プログラムの規模にもよるけど、課題のプログラム程度のものなら、
手で書き換えたほうが早いよ。

無茶ぶりっていうけど、
>拡張forをバンバンに使ってるのに古すぎて拡張forに対応していなかったりとか
>マイナーなUnixオンリーでCygwinもMingwも使えなかったりとか
>C言語と文法が似てて15年も歴史があるJavaですし、
この程度の知識があれば、C知ってる人間に聞きながらやればなんとかなるはず。
587デフォルトの名無しさん:2011/11/11(金) 12:05:36.55
できの悪い釣り
588デフォルトの名無しさん:2011/11/11(金) 16:31:58.96
phpとJavaを連携したいんですが、以下のようなことはできますか?

1. Javaからphpを呼び出す
2. phpで出力した値をJavaが受け取る

今こんな感じです。必要な部分のみの抜粋です。GET_INFO_URLというのはphpのURLのことです。
Java :
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(GET_INFO_URL);
List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(1);
nameValuePair.add(new BasicNameValuePair("order", null));
try {
___httppost.setEntity(new UrlEncodedFormEntity(nameValuePair,HTTP.UTF_8));
___HttpResponse response = httpclient.execute(httppost);
___ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
___response.getEntity().writeTo(byteArrayOutputStream);
___if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
______// (A)ここで値を受け取る予定
___}
} catch (Exception e) {
___System.err.println(tag, e.toString());
}

php:
<?php
___$order = $_REQUEST["order"];
___// (B)ここで値を送る予定
?>

(B)でデータを送信、(A)で受け取る、という構造です。
phpを呼び出すところまではうまくいっているようです。
Javaのクラスをphpから呼び出すのはぐぐったらいっぱい出てくるのですが、逆は少なくて…よろしくお願いします。
589デフォルトの名無しさん:2011/11/11(金) 16:50:55.41
>>588
なにをよろしくお願いされてるのか知れない
590デフォルトの名無しさん:2011/11/11(金) 16:52:48.20
こちらこそお願いします
591デフォルトの名無しさん:2011/11/11(金) 16:53:15.79
>>589
確かにそうですね(´・ω・`)すみません
592デフォルトの名無しさん:2011/11/11(金) 17:05:21.16
HTTPヘッダに結果用のフィールド追加した方が楽なんじゃね
593デフォルトの名無しさん:2011/11/11(金) 17:09:04.79
XMLでやりとりすべき
594デフォルトの名無しさん:2011/11/11(金) 17:13:41.20
>>586
やっぱりそうなりますよね…。
C言語はだいたいはわかってますが課題のプログラムって言っても数千行くらいあるので
ポチっと一発でCに翻訳されないかなと思ったんですが…。

Janusは拡張for以外はほぼ翻訳できてそうだから
そういうプログラムあっても良いのにって思うんですが。
うーん、とりあえず拡張forを外してJanus使ってから考えてみます。

>>587
こういう流れかなと思いまして。
595デフォルトの名無しさん:2011/11/11(金) 17:37:05.57
>>592
phpのheader関数でヘッダーを作り、javaのgetHeaderでそれをgetするということですよね?
なるほどそれならできそうです。

>>593
確かにxmlとjavaの連携の方が簡単そうですね。その発想はありませんでした。


実装できそうな気がしてきました。ありがとうございました!
596デフォルトの名無しさん:2011/11/12(土) 12:26:41.51
複数の文字列を1ノード1文字でツリー構造に格納したいんですが
なにかいいライブラリとかありますか?
597デフォルトの名無しさん:2011/11/12(土) 13:30:11.29
DOM
598デフォルトの名無しさん:2011/11/12(土) 20:40:18.88
cookieManager = new CookieManager();
CookieHandler.setDefault(this.cookieManager);

でCookieの処理をCookieHandlerに任せてるんだけど
HttpURLConnectionが実際にサーバに送ってるクッキーを
Javaプログラムの中で確認するにはどーしたらいい?
599デフォルトの名無しさん:2011/11/12(土) 21:45:04.95
CookieHandlerの自作ラッパを作って盗聴するのが簡単じゃないかな
いやCookieStoreのラッパの方がいいか
600デフォルトの名無しさん:2011/11/12(土) 21:56:06.89
ttp://takeoba.com/index.php?%C6%C8%BC%AB%A4%CE%CE%E3%B3%B0%A5%AF%A5%E9%A5%B9

例外は継承できると思うのですが、継承クラスを作る理由は何ですか?

601デフォルトの名無しさん:2011/11/12(土) 21:57:17.88
>>600
リンク踏むのめんどいから引用して要約しろ
602デフォルトの名無しさん:2011/11/12(土) 22:07:18.97
>>600
要約しろって
603デフォルトの名無しさん:2011/11/12(土) 22:09:36.19
>>601
すいません・・・
class ExceptionClass extends RuntimeException {
public ExceptionClass(String message) {
super(message);
}
}
この部分ですかね・・

604デフォルトの名無しさん:2011/11/12(土) 22:12:38.85
>>602
継承した例外クラスで付け加えるメソッドって例えばどんなものがあります?
基本的にエラーメッセージを表示させるくらいしか思いつかないのですが。
605デフォルトの名無しさん:2011/11/12(土) 22:28:58.36
エラーが発生した原因によって (つまり例外のクラスによって) catchしたりcatchしなかったりcatchし分けたりしたいから
606デフォルトの名無しさん:2011/11/12(土) 22:30:00.34
文字列の置換で

String str1 = "x x1 x2 x3 x4"

System.out.println(str1.replaceAll("\\?x[^.]", "Y"));

str1があったときに、xの文字だけを置換して

"Y x1 x2 x3 x4"

としたいのですが(x1などは置換しないようにしたい)、
該当する箇所を正規表現で指定できますか?
607デフォルトの名無しさん:2011/11/12(土) 22:32:38.20
replaceAll("\\bx\\b", "Y") でどう
608デフォルトの名無しさん:2011/11/12(土) 22:39:02.00
public class 紙がないException extends Exception {}
public class ウンコ漏らしたException extends Exception {}

public void 排便() {
 if(紙がない) {
  throws new 紙がないException()
 }
 if(ウンコ漏らした) {
  throws new ウンコ漏らしたException()
 }
 ・・・・
}

public static void main(String[] args) {
 try {
  排便()
 } catch (紙がないException()) {
  手で拭く
 }
}
609606:2011/11/12(土) 22:46:45.00
>>607
回答ありがとうございます。上記例は達成することができました。

str1 = "!x !x2 !x3 !x";

System.out.println(str1.replaceAll("\\b\\!x\\b", "Y"));

!xを置換して"Y !x2 !x3 Y"としたいのですが、これは可能ですか?
610デフォルトの名無しさん:2011/11/12(土) 22:49:00.88
>>609
自己解決しました

replaceAll("\\!\\bx\\b", "Y"));

としてできました。
611デフォルトの名無しさん:2011/11/12(土) 22:53:55.78
>>608
public class 紙がないException extends Exception {} ←{}内は何もないのは
何故ですか?
612デフォルトの名無しさん:2011/11/12(土) 22:54:43.23
>>603
引用にやる気がなさすぎて、回答者がやる気なくしたぞ
どうしてくれるんだ。
>>608なんかもコンパイルエラー出る位やる気なくなってるぞ
613デフォルトの名無しさん:2011/11/12(土) 22:56:10.62
>>611
必要ないからだろ。
あと少なくともこの辺は熟読してこい。
java.sun.com/javase/ja/6/docs/ja/api/java/lang/Throwable.html
614デフォルトの名無しさん:2011/11/12(土) 23:01:32.14
なんでRuntimeExceptionはExceptionを継承してんだ
チェック例外だけキャッチしたいときはどうしたいいの
615デフォルトの名無しさん:2011/11/12(土) 23:06:23.64
try{
//処理
}catch(Exception e) {
if(e instanceof RuntimeException) throw (RuntimeException)e;
//例外処理
}
616デフォルトの名無しさん:2011/11/12(土) 23:17:00.13
そういうキャッチの仕方しないから。
その必要が出るのは、おかしなコード書いてるんだと思った方がいい。
617デフォルトの名無しさん:2011/11/12(土) 23:22:16.63
>>606>>610
replaceAll("x(?![0-9])", "Y")
ってのもいいかもね。
618デフォルトの名無しさん:2011/11/12(土) 23:50:38.33
スレッド内から例外投げれないから
チェック例外をまとめてキャッチしたいけど
非チェック例外はキャッチしたらまずいとかない?
619デフォルトの名無しさん:2011/11/12(土) 23:53:38.55
非チェック例外をキャッチしたらまずい理由は?
620デフォルトの名無しさん:2011/11/13(日) 00:01:08.52
ぬるぽとか想定外のことが起きてたら
それをキャッチして何事もなかったかのように処理続けたらまずいだろう
621デフォルトの名無しさん:2011/11/13(日) 00:03:56.59
ぬるぽのことまで想定する、そんなしっかりした設計を始めから出来るわけないだろボケ
622デフォルトの名無しさん:2011/11/13(日) 00:06:25.65
そういう切り分けしたい場合は、
想定内の例外とやらを専用の例外クラス(またはそのサブクラス)にするんでねーの?
623デフォルトの名無しさん:2011/11/13(日) 00:07:34.18
>>621
これはアホっぽい意見だな。自分の無知さを呪った方がいい
624デフォルトの名無しさん:2011/11/13(日) 00:16:46.63
ジャバラーの皆々さんは設計とデザパタの鬼ですから全ての事象について想定済みじゃないとマインドが落ち着かなんですよ
625デフォルトの名無しさん:2011/11/13(日) 00:19:52.99
あれ?「い」が抜けてたw
やっぱり「い」がないだけでも落ち着かないですよねw
626デフォルトの名無しさん:2011/11/13(日) 00:20:52.35
とりあえず前提条件書いただけの適当なコードでもnullは想定すると思うんだが違うの?
627デフォルトの名無しさん:2011/11/13(日) 00:30:37.35
ぬるぽを想定すべきと言ってるんじゃなくて
想定外のぬるぽが起きたときはキャッチして握りつぶすべきでないといってるんだけどね

で、↓みたいに何個も同じ例外処理を書きたくないから
Exceptionで一括キャッチしたいけど、それだとぬるぽもキャッチしちゃうのが嫌ってこと。
public void run() {
 try {
  //処理
 } catch(チェック例外1) {
  //例外処理
 } catch((チェック例外2) {
  //例外処理
 }
 ・・・・
 catch(チェック例外N) {
  //例外処理
 }
}
628デフォルトの名無しさん:2011/11/13(日) 00:34:24.34
>>627
そんな時こそJava7のMulti-catchですよ!奥さん!
ってかドルフィンより前でも>>622で充分っしょ?
629デフォルトの名無しさん:2011/11/13(日) 00:50:01.98
ライブラリ全てに渡って、そもそもnullは許容しない設計を推奨する
630デフォルトの名無しさん:2011/11/13(日) 00:51:51.47
その理由は?
631デフォルトの名無しさん:2011/11/13(日) 00:54:10.57
>>629
どう言う意味ですか?
632デフォルトの名無しさん:2011/11/13(日) 00:54:25.15
try {
2chよみ();
} catch (疲れた例外 | 眠い例外 | … | 秋田例外 e) {
2ch荒らし();
}
633デフォルトの名無しさん:2011/11/13(日) 00:59:24.13
null許容しないって
ArrayListのgetとかもnull返すよね
634デフォルトの名無しさん:2011/11/13(日) 01:01:15.84
え?
635デフォルトの名無しさん:2011/11/13(日) 02:07:05.57
CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDL
636デフォルトの名無しさん:2011/11/13(日) 02:09:57.55
>>630,631,633

>>624
637デフォルトの名無しさん:2011/11/13(日) 02:19:03.98
まるで答えになってない件
638デフォルトの名無しさん:2011/11/13(日) 02:20:10.41
許容しない、の定義を明らかにしないと評価できんな
そもそも参照型の初期値nullだし
639デフォルトの名無しさん:2011/11/13(日) 03:03:39.34
SLWS: Smells Like Warped Spirit
640デフォルトの名無しさん:2011/11/13(日) 03:26:29.63
null赦さないとなんでも例外投げるハメになってtry-catch地獄になるぜよ
641デフォルトの名無しさん:2011/11/13(日) 03:27:44.13
package tcpechoserver;
import java.io.IOException;
import java.io.InputStream; import java.io.OutputStream;
import java.net.ServerSocket; import java.net.Socket; import java.net.SocketAddress;

public class tcpechoserver {
private static final int BUFSIZE = 32; // 受信バッファサイズ
public static void main(String[] args) throws IOException {
int servPort = 5000;

// サーバソケットの作成
ServerSocket servSock = new ServerSocket(servPort);

int recvMsgSize; // 受信メッセージサイズ
byte[] receiveBuf = new byte[BUFSIZE]; // 受信バッファ

// クライアントからの接続を待ち受けるループ
while (true) {
Socket clntSock = servSock.accept(); // クライアントの接続を取得
SocketAddress clientAddress = clntSock.getRemoteSocketAddress();
System.out.println("接続中:" + clientAddress);

InputStream in = clntSock.getInputStream();
OutputStream out = clntSock.getOutputStream();

while ((recvMsgSize = in.read(receiveBuf)) != -1) {
out.write(receiveBuf, 0, recvMsgSize);
}
clntSock.close();
}
}
}
642デフォルトの名無しさん:2011/11/13(日) 03:30:29.27
>>640
はピントずれてる
643デフォルトの名無しさん:2011/11/13(日) 07:08:02.97
ぬるぽは、全てのnull じゃなくて予期しないnull  ってことでしょ。
644デフォルトの名無しさん:2011/11/13(日) 08:59:39.67
null許容しないって”物”が無いという状態をどうやって表すんだ
645デフォルトの名無しさん:2011/11/13(日) 09:01:18.24
物がない状態が必要になるコードを書いてくれたまへ
たぶんアッというまに直されるから
646デフォルトの名無しさん:2011/11/13(日) 09:09:37.24
どこにも必要になるなんて書いてないから
647デフォルトの名無しさん:2011/11/13(日) 09:11:35.24
>>645
だからListのgetだろ?
648デフォルトの名無しさん:2011/11/13(日) 09:17:44.86
この場合はList#addが適当だとおも
物が無いことも必要
649デフォルトの名無しさん:2011/11/13(日) 09:44:25.77
なんでnullの話してんの?
650デフォルトの名無しさん:2011/11/13(日) 09:54:11.61
この流れだとぬるぽと書いてもガッされない。
651デフォルトの名無しさん:2011/11/13(日) 10:04:35.10
がっ
652デフォルトの名無しさん:2011/11/13(日) 10:13:45.21
>>647>>648
無いを表現するためにListにnullいれるとか斜めすぎる
仮にそれを使うなら小汚いコードになるのが必至。
そんなことしない。
653デフォルトの名無しさん:2011/11/13(日) 10:14:22.07
なによりぬるぽだ。
654デフォルトの名無しさん:2011/11/13(日) 10:21:29.98
>>652
代替案を示さない反対はただの愚痴。
655デフォルトの名無しさん:2011/11/13(日) 10:29:54.56
じゃあMap#getとかnull要素いれなくてもnull返すけど?
656デフォルトの名無しさん:2011/11/13(日) 10:30:56.69
>>653
がっだ。
657デフォルトの名無しさん:2011/11/13(日) 10:46:38.45
>>652
おまえのレベルがわかったからもういいや
658デフォルトの名無しさん:2011/11/13(日) 12:04:22.07
>>655
Map#containsKey

>>654>>657は本気でわかってないっぽい。
釣れるからもう少し様子見してみるか
659デフォルトの名無しさん:2011/11/13(日) 12:07:35.63
ちなみに俺は>>629では無いので>>629の真意はわからんが
null撤廃を一度くらい試みる価値はあると思う、自分の技術力を試す意味でね。
少なくとも、何もわかってない奴がnull判定の汚いコードをまきちらすような
そんな醜態を晒すことがない
660デフォルトの名無しさん:2011/11/13(日) 12:32:34.05
javaドカタは質問スレなのにいつも自説の披露やっとるな
661デフォルトの名無しさん:2011/11/13(日) 12:37:03.83
わかった。
つまりぬるぽだな。
662デフォルトの名無しさん:2011/11/13(日) 12:58:55.88
がっ
663デフォルトの名無しさん:2011/11/13(日) 13:11:40.75
シングルトンでNOTHINGインスタンスを提供

と、釣ってみる
664デフォルトの名無しさん:2011/11/13(日) 14:12:28.30
SLOS: Smells Like Obaka's Spirit
665デフォルトの名無しさん:2011/11/13(日) 14:14:49.26
SLNS : Smells Like Nibansenji Spirit
666デフォルトの名無しさん:2011/11/13(日) 14:15:37.79
ジャヴァラーはニルヴァーナなんか知らねーよw
667デフォルトの名無しさん:2011/11/13(日) 14:16:15.04
>>630,631,633,659,660

>>624
668デフォルトの名無しさん:2011/11/13(日) 18:39:15.43
来年の4月にある「基本情報技術者」に受かるために、今からjava言語を
どのように勉強すればいいでしょうか?
また、オススメの参考書等を教えていただければ嬉しいです。
669デフォルトの名無しさん:2011/11/13(日) 18:44:08.91
このスレの全てのレスを理解できるようになるまで
100回位繰り返し読んで理解できないところは調べる

それが出来るころには君は立派になってる
670デフォルトの名無しさん:2011/11/13(日) 18:44:39.09
何の立派かはわからないけどね。
ぬるぽ。
671デフォルトの名無しさん:2011/11/13(日) 18:48:34.18
てか、C言語とjava言語ならどっちを勉強すべき?
672デフォルトの名無しさん:2011/11/13(日) 18:50:25.05
ぬるぽで100レス越えるなんてどんだけジャヴァなんだよ
673デフォルトの名無しさん:2011/11/13(日) 18:50:45.94
Javaをまともに使える技術者で
ひとつの言語しかできない奴はいない。つまりそういうことだ
どっちからでも好きな方選べばいいよ
674デフォルトの名無しさん:2011/11/13(日) 18:53:52.18
ひとつ言えるのは
> 「基本情報技術者」に受かるために、今からjava言語を
というような
一見近道目指してるつもりの遠回りはやめた方がいいかもね。
試験に受かるために特化すればするほど、現実では使いものにならない方向に偏ることになるから。
普通にJavaを習熟すればあの試験落ちようがないし。
まっとうに使えるようになりなさいな。
675デフォルトの名無しさん:2011/11/13(日) 19:01:14.63
ウィンドウに表示したTextArea、ウィンドウの下の方に表示したいのですがどうすればよいの?
練習でサンプルを打ち込んだんですが、サンプルにはそれを指定する記述がないようです。

import java.awt.*;
import java.awt.event.*;
class BkWin extends Frame implements ActionListener {

  addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent e) {
     System.exit(0);
   }
  });
  // TEXT Area
  setLayout(new FlowLayout());
  TextArea b1 = new TextArea("Hello World!!", 30, 60);
  add(b1);
  show();
  (以下省略)
676デフォルトの名無しさん:2011/11/13(日) 19:05:45.28
>>673>>674
丁寧な返レスありがとうございます!
java言語を頑張りたいと思います。
677675:2011/11/13(日) 19:13:05.67
事故解決しました
678デフォルトの名無しさん:2011/11/14(月) 07:06:01.34
マインドすれ保守
679デフォルトの名無しさん:2011/11/14(月) 11:30:29.30
一応スレをざっと読んだけどもし既出だったらごめんなさい。
List型のオブジェクトを取得するメソッドなんですけど、


public List<TGoods> getGoodsAll() {

List<TGoods> goods = (List<TGoods>)getHibernateTemplate().find("from TGoods");
return goods;
}


eclipse ver3.6.2で、「Type safety: Unchecked cast from List to List<TGoods>」
というwarningが出てしまいます。
@SuppressWarnings("unchecked")を記述すれば、warningを消せるのですが、メソッドすべてのwarningに影響が及ぶので
使いたくありません。
プログラミングで解決できる方法ありますか?
680デフォルトの名無しさん:2011/11/14(月) 11:45:31.73
public List getGoodsAll()にすりゃいいんじゃない?
681デフォルトの名無しさん:2011/11/14(月) 11:51:51.93
>>680
ジェネリックを外すと、今度は「List is a raw type. References to generic type List<E> should be parameterized」
のwarningが出るので外せんのです。
682デフォルトの名無しさん:2011/11/14(月) 12:58:53.61
getHibernateTemplate().find("from TGoods")の戻り値の定義は?
683デフォルトの名無しさん:2011/11/14(月) 15:13:06.41
>>682
List<TGoods> です。
"TGoods"は普通のbeanでフィールドとアクセッサメソッドだけなんだけど、"String"型にしたとしても同じようにwarningが出るはず。

Spring frameworkを使った例なので分かりづらかったけど、JSPやサーブレットでsessionを使うと同様のwarningが出ます。
例えば、

Set<String> hoge = (Set<String>)session.getAttribute("hoge");
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            ここで「Type safety: Unchecked cast from List to Set<String>」のwarning
684デフォルトの名無しさん:2011/11/14(月) 15:24:42.73
ちなみに、sessionはObject型を返すんで(Set<String>)でキャスト。
getHibernateTemplate().find("from TGoods")もObject型を返します。
685679:2011/11/14(月) 15:38:01.66
たびたび申し訳ない。

getHibernateTemplate().find("from TGoods")はObject型じゃなくて、List<TGoods>型を返します。
なので、キャスト不要だと思うのだけど、キャストしないと
「Type safety: The expression of type List needs unchecked conversion to conform to List<TGoods>」のwarning
が出て、(List<TGoods>)でキャストしろと怒られます。
で、キャストすると>>679のwarning。
やっぱりジェネリックスは鬼門だ。
686デフォルトの名無しさん:2011/11/14(月) 15:56:23.43
List<String> hoge = new ArrayList<String>()
                       ↑ジャネリクスってこっちも書かないとだめなん?
687デフォルトの名無しさん:2011/11/14(月) 16:01:35.45
だめ、ってかワーニングが出る。
「ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized」
688デフォルトの名無しさん:2011/11/14(月) 16:12:08.94
でないけど?
689デフォルトの名無しさん:2011/11/14(月) 16:14:00.82
ためしにこんなコードを書いてみました。

import java.util.*;

class MyClass {

 public static void main(String[] args) {
  List<String> bar = (List<String>)Foo.getStr();
             ^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  for (String str : bar) {
   System.out.print(str);
  }
 }
}

class Foo {

 static Object getStr() {

  List<String> list = new ArrayList<String>();
   
   list.add("This ");
   list.add("is ");
   list.add("a ");
   list.add("pen.");
   
   return (Object)list;
 }
}

^^^^部でワーニングが出ます。
Objectをキャストするとワーニングになるようです。
690デフォルトの名無しさん:2011/11/14(月) 16:14:22.45
Java7は省略できるようになったよね = new ArrayList<>()みたいに
<>も省略しても警告でないかは知らなんだけど
691デフォルトの名無しさん:2011/11/14(月) 16:24:33.45
>>690
このPCはJDK6だからかな?
7だと確かにその記述でいけるっぽい。
692片山博文MZ:2011/11/14(月) 16:27:44.55
ふふふ、諸君はわたくしに勝てるかな。。。
693デフォルトの名無しさん:2011/11/14(月) 16:34:17.11
>>692
楽勝。
694デフォルトの名無しさん:2011/11/14(月) 16:42:21.57
警告されるのって>>689のケースだけ?
695679:2011/11/14(月) 17:23:03.21
>>697
そこだけ。

JRE7をインストールして>>690みたいに、FooクラスのgetStr()メソッドを

List<String> list = new ArrayList<>();

書いたけどやっぱり

(List<String>)Foo.getStr();

の部分ワーニングが出ました。
696679:2011/11/14(月) 17:24:23.25

訂正
×JRE7をインストール
○JDK7をインストール
697デフォルトの名無しさん:2011/11/14(月) 17:34:40.13
Javaでリフレクションを使わずに
引数を変えることで呼び出す処理を変えるには
(1)のようにswitch文で分岐する、(2)のように処理を実装したクラスを渡す
以外にどのような方法が考えられますか?

(1)
public void method(int arg, Object obj)
 switch(arg){
  case A:
   //処理A
  case B:
   //処理B
  ・・・・
 }
}

(2)
public void method(Proc proc, Object obj) {
 proc.execute(obj)
 ・・・・
}
class ProcA implements Proc { ・・・・ }
class ProcB implements Proc { ・・・・ }
698デフォルトの名無しさん:2011/11/14(月) 18:02:45.62
>>685
返り値が単純なListであって、元からジェネリクス使われてないんじゃない?
List<?> goods = getHibernateTemplate().find("from TGoods");
とするととりあえずは警告防げるんじゃね
結局TGoodsのListでreturnするならキャストは必須だし
Unchecked castのwarningは必ず出る

キャストして警告が嫌ならeclipseの設定で
Java→コンパイラー→エラー/警告→総称型→未検査の総称型操作で
警告をするかしないか設定すればいい

それから>>689は単にFooクラスで返り値にジェネリクス使わずにObjectにしてるからでしょ
ちゃんと記述すれば警告出さずに済む
699デフォルトの名無しさん:2011/11/14(月) 18:29:41.07
>>679
それHibernateTemplate#find(String)じゃないの?
戻り値はListなんだけど
700679:2011/11/14(月) 19:14:56.59
>>698,699
確かにキャストは不要だと思うんだけど、キャストしないと>>685のように
「Type safety: The expression of type List needs unchecked conversion to conform to List<TGoods>」
のワーニングが出るんで仕方なく(List<TGoods>)でキャストしてる。

あと、>>689
return (Object)list;
でオブジェクトでキャストしてるのは、サーブレットのsession.getAttribute()のようにObject型を返すメソッド
を作るためにわざとObjectでキャストしてます。(>>683参照)

感じとしては、コレクション+ジェネリックスでキャストをするとType safetyワーニングが出る。
701デフォルトの名無しさん:2011/11/14(月) 19:43:03.35
>Type safety: The expression of type List needs unchecked conversion to conform to List<TGoods>
戻り値がListなのに自分が受け取る方List<TGoods> goodsで宣言してreturn (List<TGoods>)hogeしてるからだろ。
702デフォルトの名無しさん:2011/11/14(月) 20:57:08.13
public smallerclass extends greatclass
{
super();
}

このsmallcerclassの存在価値ってなんですか?
良く分かりません・・

super();は何の役割を表しているのでしょうか?
703デフォルトの名無しさん:2011/11/14(月) 21:21:17.12
import java.io.*;
class A{
public static void main(String[]a)throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw=new PrintWriter(new BufferedWriter(new FileWriter("pom.txt")));
String str;

while((str=pw.readLine(br.readLine()))!=null){
if(str=="0")
System.exit(0);
pw.close();
}
}
}
コンパイルエラーになるのですが何故なんだぜですか?
ちなみにbr.readLine()は消して文字列にしても同じエラー(シンボルがみつからませんです!)
704デフォルトの名無しさん:2011/11/14(月) 21:28:03.24
マルチ死ね
705675:2011/11/14(月) 21:52:45.53

 −−−−−−−
 |         |
 |         |
 |         |
 |         |
 |         |
 |         |
 |  TextArea | [ボタン]
 |         | [ボタン]
 |         | [ボタン]
 |         |
 −−−−−−−

ウィンドウ上にこんな感じで配置するにはどうしたらよいですか?
706デフォルトの名無しさん:2011/11/14(月) 21:54:12.84
端末外にボタンを出力は無理だと思うぜ・・
707デフォルトの名無しさん:2011/11/14(月) 21:58:34.45
>>702
コンパイルくらい通せクズが。質問する資格ねえわ
708デフォルトの名無しさん:2011/11/14(月) 21:59:53.05
イミフすぎる。API見直してこい。
あとWriter系のコンストラクタの連ね方がおかしすぎ。
そもそもいらねえクラスあるだろ。
709デフォルトの名無しさん:2011/11/14(月) 22:00:19.85
>>708>>703あて
710デフォルトの名無しさん:2011/11/14(月) 22:03:15.31
>>705
あきらめろ。
AWT使ってる奴なんか既に絶滅したから情報あつまらんよ。
711デフォルトの名無しさん:2011/11/14(月) 22:08:48.45
警告されるのが>>689のケースだけならば
普通は

 List<String> list = new ArrayList();

で済むのに、このケースのwarning出さないためだけに
コンストラクタ呼び出し時に書き方を↓に揃えるって
Bad Practiceじゃね?

 List<String> list = new ArrayList<String>();
712デフォルトの名無しさん:2011/11/14(月) 22:19:00.94
>>710
AWTやSWINGって実務で使うのかな?
趣味の範疇かと思うんだけど。

>>705
のようなレイアウトはPanelを使えばできないこともない。
713デフォルトの名無しさん:2011/11/14(月) 22:40:33.64
>>711
おかしなこと言うな。
714デフォルトの名無しさん:2011/11/14(月) 22:43:17.94
SWINGは使ってる
715679:2011/11/14(月) 23:00:26.35
いろいろ調べてみたけど、ジェネリックスでキャストした場合、Type safetyのwarningを回避する方法はないみたい。
仕方ないから、キャストするだけのメソッドを作成して、そこで@SuppressWarningsをつかってワーニングを抑制するようにしました。
みなさん、いろいろとありがとうございました。
716デフォルトの名無しさん:2011/11/14(月) 23:03:18.39
それで正解
717デフォルトの名無しさん:2011/11/15(火) 00:58:46.14
代入式の評価について教えてください。

「解きながら学ぶJava入門編」の3章の錬成問題で
 int a=1,b=3,c=5;
 System.out.println("a=b=c:"+(a=b=c));
 System.out.println("c=b=a:"+(c=b=a));
の実行結果がそれぞれ「5」となるとありました。
参考:
 ttp://www.bohyoh.com/Books/TokinagaraJavaA/TKMJA03.pdf

実際に以下のように書いて実行すると、出力はどちらも「5」に
なりました。代入演算子=は右結合となるので、1つ目は「5」ですが
2つ目は「1」になりそうですが、実際は結果が違いました。
なぜこのような結果になるのか教えて頂けないでしょうか。
よろしくお願いします。

public class Test {

public static void main(String[] args) {
int a=1,b=3,c=5;
System.out.println("a=b=c:"+(a=b=c));
System.out.println("c=b=a:"+(c=b=a));
}
}
718デフォルトの名無しさん:2011/11/15(火) 01:09:33.30
public static <T> List<T> cast(List<?> list, Class<? extends T> clazz) {
List<T> checkedList = new ArrayList<T>(list.size());
for(Object o : list) { checkedList.add(clazz.cast(o)); }
return checkedList;
}

とか、どこかにありそうで見つからない。うんkでいいなら

@SuppressWarnings("unchecked")
List<TGoods> goods = getHibernateTemplate().find("from TGoods");

>>717
public static void main(String[] args) {
int a=1,b=3,c=5;
System.out.println("a=b=c:"+(a=b=c));
System.out.println(a);
System.out.println("c=b=a:"+(c=b=a));
}

719デフォルトの名無しさん:2011/11/15(火) 02:14:16.74
>>717
> それぞれ「5」となる
がミスリード。それぞれじゃないのにそれぞれと書くから混乱する。
本当にその言葉のまま書かれてるなら、その本はやめとけ。
720717:2011/11/15(火) 02:15:42.06
>>718
あっ、そうですね。
理解できました。ありがとうございます。
721717:2011/11/15(火) 02:18:24.17
>>719
「それぞれ「5」となる」としたのは私です。
書籍では単純に出力結果だけが書かれてました。
お騒がせしました。
722デフォルトの名無しさん:2011/11/15(火) 02:56:32.66
>>718
そのキャスト意味ないからList<?> goods = getHibernateTemplate().find("from TGoods");の方がましだと思うんだが。
723デフォルトの名無しさん:2011/11/15(火) 03:02:25.31
おまえに意味がわからないからといって
意味がないことにはならない
コード書けば意味がわかるぞ
724デフォルトの名無しさん:2011/11/15(火) 03:40:06.66
馬鹿だろおまえ
725デフォルトの名無しさん:2011/11/15(火) 10:27:00.94
うん
726デフォルトの名無しさん:2011/11/15(火) 11:02:31.64
//>>705swingなら
import java.awt.BorderLayout;
import javax.swing.*;

public class Sample {
public static void main(String[] args){
new Sample().go();
}
public void go(){
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 500);
Box buttonBox = new Box(BoxLayout.Y_AXIS);
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JTextArea textArea = new JTextArea(20,50);
JScrollPane scroller = new JScrollPane(textArea);
JButton btn1 = new JButton("button1");
JButton btn2 = new JButton("button2");
JButton btn3 = new JButton("button3");
buttonBox.add(btn1);
buttonBox.add(btn2);
buttonBox.add(btn3);
panel2.add(buttonBox);
panel1.add(scroller);
frame.add(panel2,BorderLayout.EAST);
frame.add(panel1,BorderLayout.CENTER);
frame.setVisible(true);
}
}
727デフォルトの名無しさん:2011/11/15(火) 11:41:21.55
解決したのでもういいです^^
728デフォルトの名無しさん:2011/11/16(水) 00:38:38.02
   /::::::::::::::::::::/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::\   /   /
 /:::::::::::::::::::::::/:::::::;:::::::::::::::::::::::::::;---- 、 _::::::::::ヽ  / / /         おにいちゃーーん アルカを保守してーー
::::::/:::::::::::::::::::::≠、::/:/::::::::::::::::/⌒V⌒ヽ>ミュ:::::i .// /  / ̄ ̄`\
::::'::::::::/::::::;;;::::(^_^)::'::::::::::::::::::∠ゝ¥人,-、ィ '' iY'}:::::i l//  /  ,.:::::、 _ ヽ
::::::::::/:::::/,-、ヽ::T:::::::::::::::::/:::::::::フ::::7::ーテ-ミメV|゙::::ll/  /   i:::::::::'´::`i l
::::::::/::::::| ! ノ )|::::|\::::::/::::::::::/:::::/::::::/::::::/::Y:::::::/   l   !:::::::::::::ノ  l
::::::/:::::::::! i,{ヘ |::::|  `'´_,`ー∠:::::/:::::;:イ::::::/ハ:/::::/  __,ム  └''''゙゙´  丿
::::/:::::::/:::ゝニ゙.|::::|    ゙ヾミミ、、`゙ー-'∠;;;;/:/:ノ::::/     ヽ、____,/
::/::::::/:::::::::{|| >く   =  ``     ==≡/!'゙゙フ'-ニー―‐--- ......,,,_
/::::::/:::::::::::|`~ー=ミL__  ̄       i> = !:ノ 'ー,-、  ̄ ̄`゙'ー--、
:::::::/:::::::::::::|      `゙ー-、.丶 __,´  __ム'-‐ァ:::::::::`ヽ、           /
::::/i:::::::::::::::|          `ー<^< ̄    /::::::::::::::::::::::::`ヽ、_      i
:/.i::::::::::::::::|             \\ヽ /::::::::::::::::::::::::::::::::::::::/`゙TTー+┘
 i:::::::::::::::::|              ヽ`゙メ:::::::::::::::::::::::::::::::::::::::/  /::! ノ
729デフォルトの名無しさん:2011/11/16(水) 00:47:26.16
解決したのでもう保守です
730デフォルトの名無しさん:2011/11/16(水) 14:04:01.64
javaFXって使ってる?
731デフォルトの名無しさん:2011/11/16(水) 17:56:17.18
JavaFXを使う用途にJavaを使わない
732デフォルトの名無しさん:2011/11/16(水) 19:11:19.03
post通信を使ってサーバー上のDBにBLOB型で格納された
ファイルを取得するにはどうしたらよいでしょうか?
733デフォルトの名無しさん:2011/11/16(水) 22:01:43.14
>>730
java7入れたら抱き合わせで付いてきたけどAPIが微妙に変わってよくわからんかった。
734デフォルトの名無しさん:2011/11/16(水) 22:37:30.23
Graphic2Dでダブルバッファ描画しているアニメーションを連番のPNGで出力しているの
ですが、バッファへの描画が間に合っていないようで、画像の一部が欠けてしまいます。
ちなみに、以下のような雰囲気のコードを実行しています。
(実物をお見せできなくてすみません…)

Graphics2D gBuf; Image imgBuf;

private void Init(){imgBuf = createImage(400, 300); gBuf = (Graphics2D)imgBuf.getGraphics();}

private void outImage(int step){
try{ImageIO.write((BufferedImage)imgBuf, "PNG", new File("hoge_" + fileNum.format(step) + ".png"));
}catch(Exception e){System.exit(1);}
}

public void paint(Graphics g){
(gBufへの描画コマンド); g.drawImage(imgBuf, 0, 0, this);
}

public static void main(String[] args){
myClass w = new myClass();
w.Init(); w.repaint(); w.outImage(0);
for(int i = 1; i <= 100; i++){(アニメーション処理); w.repaint(); w.outImage(i);}
}

repaintとoutImageの間に適当な時間のSleepをかませるとPNG画像の欠けはなくなります。
imgBufの更新を待ってからPNG出力したい場合、どうするのが適切でしょうか?
735デフォルトの名無しさん:2011/11/16(水) 23:09:40.21
myClassはなんの親クラスでスレッドはシングルとマルチどっち?
736デフォルトの名無しさん:2011/11/16(水) 23:16:41.05
>>731
java使ってるのにswingも使わないんですか?
737デフォルトの名無しさん:2011/11/17(木) 00:41:48.31
も?
738デフォルトの名無しさん:2011/11/17(木) 02:09:55.33
クライアントJavaでまともに使われてるのなんてAndroidくらいだろ
正確にはJavaではないけど
739デフォルトの名無しさん:2011/11/17(木) 02:38:56.30
で?
740734:2011/11/17(木) 08:00:19.47
>>735
どの親クラスをextendsしているのかという
意味でしたら、親はFrameクラスです。
規模の小さいプログラムなので、Frameの
サブクラスをひとつ定義して、その中で
全ての計算、描画処理を行っています。
複数のスレッドを生成するような処理も
実装していません。
741デフォルトの名無しさん:2011/11/17(木) 11:22:10.94
>>740
じゃあ画像に書き込む処理が完了する前にpaintが呼ばれてるだけだと思う。
ゲーム画面のスナップショットじゃないからコンポーネントのpaintが呼ばれるたび画像の書き出しは
間違ってるような気がするのでスナップショットと書き出し要求をキューに突っ込んであとで暇な時
に別スレッドにでもやらせればいいと思う。
742デフォルトの名無しさん:2011/11/17(木) 19:01:48.01
複数のスレッドを生成してるつもりがなくてもイベントディスパッチスレッドというものがあってな
743デフォルトの名無しさん:2011/11/17(木) 19:57:38.32
JWSって使ってる?
744デフォルトの名無しさん:2011/11/17(木) 21:55:41.83
Calendarクラスのディープコピーで質問です。

ーーーーーーーーーーーーーーーーーーーーーーー
Calendar c1;
Calendar c3;

c1=Calendar.getInstance();
c1.set(2000,1,1);

c3=(Calendar)c1.clone();

c1.add(Calendar.YEAR,10);
PrintCalendar(c1);PrintCalendar(c3);
ーーーーーーーーーーーーーーーーーーーーーーー

上記のような実験したところc3はc1のインスタンスをディープコピー出来ていました。
が、http://www.syboos.jp/java/doc/object-clone-deep-copy.html など見ると
Java Object#clone()は単なるシャローコピー とあります。
でも試してみたらclone()を使ってもディープコピー出来ました。

これはどういうことなんですか?
745デフォルトの名無しさん:2011/11/17(木) 21:58:34.85
他の(ミュータブルな)クラスのインスタンスへの参照を持たないオブジェクトのシャローコピーは
ディープコピーと同じ
746デフォルトの名無しさん:2011/11/17(木) 22:04:07.22
ディープコピーとシャローコピーを勘違いしてると思う
シャローコピーもディープコピーもそのインスタンス自身は複製されるよ
違うのはそれが参照してる他のオブジェクトも複製されるかどうか
747デフォルトの名無しさん:2011/11/17(木) 22:06:40.10
>>744
Calendarクラスでcloneをオーバーライドして
中で使ってるプリミティブの配列とかもnewして
forで回してディープコピーしてるから
748デフォルトの名無しさん:2011/11/18(金) 00:22:48.00
リフレクションで汎用ディープコピーを作ろうとして
(しかもデスマの真っ最中に)色々ハマったのは
いまではいい思い出。
749デフォルトの名無しさん:2011/11/18(金) 00:39:37.55
>>744
仕様上シャローコピーだけどクラスによってコピーの意味が異なるから実装次第ってjavadocに書いてある。
その前にコピーの定義が書いてあるからそれ満たしとけばいい。
750デフォルトの名無しさん:2011/11/18(金) 00:44:23.10
Groovyとかのテンプレートエンジンでコントローラからビューにオブジェクトを渡した時、
ビューでCtrl+Space(Eclipse)きかないと思うけど
ものすごく不便じゃない?
スクリプト言語みたいに型を明示しないのってなんかメリットあるの?
751デフォルトの名無しさん:2011/11/18(金) 01:07:16.24
そんな中途半端なのじゃなくてPythonとかRubyとか本格的なスクリプトやれば
いかにJavaが冗長かわかるよ
752デフォルトの名無しさん:2011/11/18(金) 01:18:07.26
そりゃスクリプトで事足りる用途にコンパイラ言語が冗長なのは当たり前だろ。
753750:2011/11/18(金) 01:27:45.38
普段Ctrl+Spaceでどんなメソッドあるか確認しながらコーディングしてるので
Groovyでテンプレート書こうと思ったらどうしたらいいかわからなかった。
いちいちクラス開いてメソッドシグネチャを確認しながら書くの?っていう
それとも何か良い方法があるの?
754デフォルトの名無しさん:2011/11/18(金) 01:38:16.60
ゆとり乙
755デフォルトの名無しさん:2011/11/18(金) 10:29:45.63
実際Javaのクソまどろっこしいライブラリ使うんなら大してスクリプトの意味ないよな
Scalaなんかも思いっきりJavaのライブラリが足引っ張ってるし
756デフォルトの名無しさん:2011/11/18(金) 10:33:26.29
scala?
日本人ならjruby一択でしょ
757デフォルトの名無しさん:2011/11/18(金) 13:04:19.30
Scalaが良いっていうよりGroovyがダメ過ぎる
JavaのテンプレートエンジンはScalaになっていきそう
758デフォルトの名無しさん:2011/11/18(金) 13:06:04.53
scala?
ただの流行なだけでしょ
759デフォルトの名無しさん:2011/11/18(金) 15:12:32.91
ドヤ顔で中二病発言すんなよw
760デフォルトの名無しさん:2011/11/18(金) 21:23:41.37
以下のようなコードを書いたのですが、Runクラス(Runnableを実装)のrunメソッドが
1回しか呼び出されません。

ScheduledExecutorService service = Executors.newScheduledThreadPool(1);
service.scheduleAtFixedRate(new Run(), 0, 500, TimeUnit.MILLISECONDS);

peliodの値をもっと小さくするとrunメソッドは何度も実行されます。
scheduleAtFixedRateメソッドでは、実際には指定した周期で実行されないのでしょうか?
761デフォルトの名無しさん:2011/11/18(金) 23:35:16.27
私の心の中をエスパーしないライブラリの方が間違っているのです。
762デフォルトの名無しさん:2011/11/19(土) 16:16:47.51
ArrayList<ByteBuffer> Letter = new ArrayList<ByteBuffer>();
ByteBuffer buf;

bufに"unko"を格納

Letter.add(buf);

bufに"manko"を付け足し

System.out.println(Letter.get(0)デコード);


これでunkomankoが出力されるのだがおかしくね??
763デフォルトの名無しさん:2011/11/19(土) 16:23:22.75
テキスト中にある文字列が出てきた回数をカウントしたい
HashMap<String, Integer> count;
を定義して
Integer old = count.get(str);
count.put(str, old == null ? 1 : old + 1);
こんな感じに書いてみたけど結構遅い。
他に良い方法ありますか?
764デフォルトの名無しさん:2011/11/19(土) 16:37:12.01
>>762
おかしくない。
765デフォルトの名無しさん:2011/11/19(土) 16:39:49.59
>>762
てめー、ウンコとマンコを一緒にすんじゃねーよ
766デフォルトの名無しさん:2011/11/19(土) 16:43:26.44
>>763
HashMapで遅いと感じるなら、ハッシュ化を自分でやるしか無い。
767デフォルトの名無しさん:2011/11/19(土) 16:45:23.55
>>763
Auto Boxingがいちいち動くのが気になる
768デフォルトの名無しさん:2011/11/19(土) 16:46:46.00
>>764
Letter.get()は元データ先を参照してるってこと?
769デフォルトの名無しさん:2011/11/19(土) 16:51:55.92
>>768
ArrayListがどうよりも、ByteBufferが変更可能オブジェクトかどうかの方が問題。
770デフォルトの名無しさん:2011/11/19(土) 16:53:12.52
>>768
プリミティブはコピー。その他は参照。
Javaの基本だよ。
771デフォルトの名無しさん:2011/11/19(土) 17:00:18.13
>>767
鋭いですね。
772763:2011/11/19(土) 17:22:19.61
以下のコードの出力結果は
1 1 1
になりますが、Integerがオブジェクト型であるなら1 2 3になりそうですがなぜこうなるんでしょうか?

public class TestMap {
private static final HashMap<String, Integer> t = new HashMap<String, Integer>();
private static final String a = "a";

public static void main(String[] args) {
increment();
System.out.println(t.get(a));
increment();
System.out.println(t.get(a));
increment();
System.out.println(t.get(a));
increment();
}

private static final void increment() {
Integer r = t.get(a);
if (r == null) {
t.put(a, 1);
} else {
r++;
}
}
}
773デフォルトの名無しさん:2011/11/19(土) 17:24:55.01
>>772
1以降のところでputしてないじゃん
774デフォルトの名無しさん:2011/11/19(土) 17:26:50.83
Integerは一回作ったら不変
775デフォルトの名無しさん:2011/11/19(土) 17:45:05.94
public Integer ++(Integer old){
 return new Integer(i+1);
}

Integerに対する++演算はこうなってると思えばいい。
776デフォルトの名無しさん:2011/11/19(土) 17:45:29.01
間違えた。
return new Integer(old+1);
777デフォルトの名無しさん:2011/11/19(土) 17:49:28.22
ん、これってelse文でインクリメントした値を
HashMapに入れてないってだけじゃないの?
778デフォルトの名無しさん:2011/11/19(土) 17:51:56.99
HashMapに入れたIntegerを++で内部的に
書き換えたつもりになってると思われる
779デフォルトの名無しさん:2011/11/19(土) 18:15:48.33
mutableじゃなくて単純に参照とコピーの区別がついてないだけじゃないの?
clone使えばimmutableと同じだし。
780デフォルトの名無しさん:2011/11/19(土) 18:53:04.91
r++は((r.intValue() )++)
781デフォルトの名無しさん:2011/11/19(土) 21:37:41.74
>>780
こうなるよ。
> Integer.valueOf( i.intValue() + 1 );
782デフォルトの名無しさん:2011/11/19(土) 23:50:24.78
概念は同じだろ
783デフォルトの名無しさん:2011/11/20(日) 01:47:17.65
ここで質問することなのかわからんけどもちょっと教えて欲しいことがあるんだ
知り合いにjavaでゲーム作る本をもらって、それのガイドの通りに「JBuilder8personal」ってやつをインストールした
その後それを使うためのライセンスってやつを取らなきゃいけないみたいなんだけどそのページに繋がらない
どうすればいいんだろか、自分はプログラムとか全くの初心者なのでよくわからん

要点をまとめると
そもそもJBuilder8personalってのはまだ使えますか?
javaについて学べるわかりやすい参考書があれば教えてください

なんか意味わからん文章になっててすいません
784デフォルトの名無しさん:2011/11/20(日) 02:18:36.84
ぐぐって見たがJBuilder 8 って、2002年だか、2003年の製品?
10年前のチラシみてパソコンを買う人でなければ、考え直した方がいい
785デフォルトの名無しさん:2011/11/20(日) 02:22:53.31
参考書を人に選んでもらう感覚って
今は普通なのかね?
ちょっと信じられないんだな
786デフォルトの名無しさん:2011/11/20(日) 02:35:12.55
やっぱ古すぎるよな、本は返してくる

今さっきjavaをパソコンに入れたばかりの本当に右も左もわからん状態なんだ
amazonとかで調べてみたけどどれがいいかわからなかった
有名そうだしとりあえず独習って参考書の内容を一通り理解すればいいかな?
787デフォルトの名無しさん:2011/11/20(日) 03:01:41.67
右も左もわからん程度なら
とりあえず、そこら辺に落ちてるWebページを見ればいいんじゃまいか
788デフォルトの名無しさん:2011/11/20(日) 04:24:37.66
swingのJFrameでウィンドウを表示するサンプルと、ウィンドウにボタンを1個表示するサンプルを
打ち込んでみました。ボタンを表示するサンプルにはJFrameを使用せずにgetContensPaneを使用していました。

getContentPaneはJFrameのメソッドらしいのですが、こいつを呼び出せばJFrameを呼び出したと等価なのでしょうか?
789デフォルトの名無しさん:2011/11/20(日) 04:46:41.02
すまん、自己解決しました
790デフォルトの名無しさん:2011/11/20(日) 04:57:08.36
>>785
このスレでも「Java EEやるんだけどどの本がいいですか?」などといった質問はよくあるでしょ
791デフォルトの名無しさん:2011/11/20(日) 05:09:36.90
最初に嘘がかいてある本で勉強すると大変だもんな
792デフォルトの名無しさん:2011/11/20(日) 05:15:13.29
>>790
良くあるんだとしたら
教育失敗した世代だな
793デフォルトの名無しさん:2011/11/20(日) 07:20:21.61
ByteBufferのディープコピーのやり方を教えてください
794デフォルトの名無しさん:2011/11/20(日) 08:16:35.31
795デフォルトの名無しさん:2011/11/20(日) 08:18:51.81
>>792
立ち読みしろってか?
796デフォルトの名無しさん:2011/11/20(日) 08:24:13.57
参考書は購入前に立ち読みするに限る。
どうしても向き不向きがあるから自分にあったものを選ばないと投げ出す可能性があるよ。
797デフォルトの名無しさん:2011/11/20(日) 08:27:47.97
紙の辞書ですね。分かります。
798デフォルトの名無しさん:2011/11/20(日) 08:30:38.65
interface I {
public void print() throws IOException;
}
class A implements I{
public void print() throws NullPointerException{
System.out.println("A");
}

IOExceptionとNullPointerExceptionに継承関係がないのにエラーが起きないのはなぜ?
799デフォルトの名無しさん:2011/11/20(日) 09:37:08.86
staticメソッドの抽象メソッドって作れないんだっけ?
インスタンス作るまでもないクラスに、あるメソッドが定義されてることを保証したいんだけど。
800デフォルトの名無しさん:2011/11/20(日) 10:09:22.77
無理
801デフォルトの名無しさん:2011/11/20(日) 10:53:19.83
インターフェイスじゃ駄目なの?
802デフォルトの名無しさん:2011/11/20(日) 10:53:20.21
無料RPG製作ツール「ロープレジェネレーター」

直感的操作で簡単なゲームが作れます。 簡単に配布可能な状態に出力する
ことができます。(HSP製のソースコード付きで、スクリプトの知識があれば
自由度の非常に高いカスタマイズができます)
他にも仲間預かり機能(100人も)や、仲間の状態/状態異常を細かく設定
できたり、乗り物が作れたり、ゲーム中に画像を差し込んだり、回転や
フラッシュなどのエフェクトなんかも簡単に作れる様です。
移動は矢印キーの他に、キャラがマウスを追っかけたりするとのこと。
戦闘はデフォだとドラクエ系。

・次期バージョンのロープレジェネレーター2.00アルファ版2を公開しました。(2011/10/29)
803デフォルトの名無しさん:2011/11/20(日) 10:53:58.09
インスタンス作るまでもないクラスに非staticメソッド設けたところで、
設計上大して恥ずかしい話とも思えないのだが。

MathやStrictMathも、継承とシングルトンで実現すべきだったかもしれない
804デフォルトの名無しさん:2011/11/20(日) 11:18:14.26
それはない
805デフォルトの名無しさん:2011/11/20(日) 11:19:06.16
どちらを優先するかってことなんだけどね。
「このクラス、状態持ってるわけでもないしユーティリティっぽいし全部staticメソッドでいいんじゃね?」
「ここでこういう使い方をしたくてインタフェースが必要なんで仕方なく非staticにしてます」
みたいな。
806デフォルトの名無しさん:2011/11/20(日) 11:20:32.04
StrictMath使う場合は利用側のstrictfp指定がセットだから
それだけ差し替えられてもあまり意味がない
807デフォルトの名無しさん:2011/11/20(日) 11:21:51.35
DIするような場合もスタティックは使わん方がいい
808デフォルトの名無しさん:2011/11/20(日) 12:58:37.93
>>798
NullPointerExceptionは非チェック例外だから
809デフォルトの名無しさん:2011/11/20(日) 14:39:12.20
798ですが、クラスはインタフェースのメソッドpublic void print()を
実装しなければならないけどIOExceptionの部分は継承関係になくてもよいって認識でおk?
810デフォルトの名無しさん:2011/11/20(日) 14:44:25.62
>>792
あなたは日本国政府からどういう教育を受けたんですか?
811デフォルトの名無しさん:2011/11/20(日) 14:49:21.61
>>809
検査例外が緩くなるの(IOExceptionの子クラスか、例外なし)は問題ない。
親が定義してない検査例外を子クラスのthrows節につけるのはダメ。

NullPointerExceptionは検査例外じゃないから好きなだけthrows節につけられる。
けどコーディングスタイル的にthrows節には検査例外しかおかないって人も多い。
812デフォルトの名無しさん:2011/11/20(日) 14:59:01.02
ライブラリ設計のときのjava言語特有の悩みとしてはfinalizerを宣言(実装)するべきかどうかはいつも悩む
813デフォルトの名無しさん:2011/11/20(日) 15:57:26.59
>>811
なるほど。なんとなくわかったよありがとう。
814デフォルトの名無しさん:2011/11/20(日) 16:10:03.45
馬鹿には無理
815デフォルトの名無しさん:2011/11/20(日) 16:14:51.26
J2EE実務で使ってる人いる?
816デフォルトの名無しさん:2011/11/20(日) 16:55:50.32
>>812
ふつーは、いつ呼び出されるかわからんfinalizeに後始末を任そうとするな、じゃないの?
悩むことある?
817デフォルトの名無しさん:2011/11/20(日) 17:00:13.35
new WindwoAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}

無名内部クラスがWindowAdapterのメソッドwindowClosingをオーバーライドしてSystem.exit(0)を実行している。
というとこまで分かるのですが、WindowEvent eってなんですか?
仮にWindowEvent型のeを受け渡してるってことでしても、eって値を持っていないですよね?
818デフォルトの名無しさん:2011/11/20(日) 17:17:03.43
質問の意味がイミフ
819デフォルトの名無しさん:2011/11/20(日) 17:21:28.32
>>816
そんな知識はあって当然の上での>>812なんじゃねーの?
820デフォルトの名無しさん:2011/11/20(日) 18:39:12.87
コメントの部分でエラーが出てコンパイル出来ないので困っています。
なぜT型のインスタンスが作成できないのでしょうか?
ご存知の方いらっしゃいましたら、教えてください。
お願い致します。

class Test {}

class Data<T extends Test> {
public void func() {
T t = new T(); //※ここでエラーが出ます
}
}
821デフォルトの名無しさん:2011/11/20(日) 18:47:04.84
仕様です
822デフォルトの名無しさん:2011/11/20(日) 18:53:50.82
>>820
newInstanceを使う。
823820:2011/11/20(日) 19:47:30.75
>>821
>>822
newInstanceとは、ClassクラスのnewInstanceでしょうか?使い方、調べてみます。
どうしてこのような仕様になってるのでしょうか?凄く不便な気がするのですが。。。
824デフォルトの名無しさん:2011/11/20(日) 20:11:12.97
キャストを挿入するだけのなんちゃってジェネリクスだから
VMを弄るのが嫌だからそうなった
実際にはTのところがすべてObjectになるだけと覚えておけば理不尽に見える制限も理解できる
825デフォルトの名無しさん:2011/11/20(日) 21:05:55.60
質問です。

hoge.jarの中にpiyo.classとfuga.jarが入っているとして、
fuga.jarにクラスパスを通してpiyoを実行することは可能でしょうか?
その場合、hoge.jarのMANIFESTにはどう書けばよいのでしょうか?

よろしくお願いします。
826デフォルトの名無しさん:2011/11/20(日) 22:47:15.74
int型の八桁の変数を例えば day = 20111120 なら 2011/11/20,
short方の四桁の数字 time = 2245 を 22:45 のようにSystem.out.println();で表示するのにはどのようにすればいいですか?
827デフォルトの名無しさん:2011/11/20(日) 22:51:09.63
printlnf()
828デフォルトの名無しさん:2011/11/21(月) 00:05:13.37
質問です。

javaで生成遅延を実装したいです。
目標は組み合わせを一つずつ生成するというものです。
829デフォルトの名無しさん:2011/11/21(月) 00:21:56.74
>>828
質問は?
830デフォルトの名無しさん:2011/11/21(月) 00:42:34.09
>>826
toString -> slice -> print
831デフォルトの名無しさん:2011/11/21(月) 00:48:06.10
>>825
MANIFESTの記述でなく、目的だけでよければ。
http://fjep.sourceforge.net/
832デフォルトの名無しさん:2011/11/21(月) 02:02:43.11
>>823
不便も糞も、
どんなクラスが不明なのに引数なしのコンストラクタがあるとは限らんだろ
どんだけJavaにエスパー求めてるんだ
833デフォルトの名無しさん:2011/11/21(月) 02:08:26.38
実行時の型がObjectだからエスパーもできんよな
834デフォルトの名無しさん:2011/11/21(月) 10:58:02.44
それが出来る言語もあるんだけどね
835820:2011/11/21(月) 11:01:46.58
TをObjectに変えても、エラーは出ないと思うのですが。

public void func() {
Object t = new Object(); //※ここでエラーが出ます
}

私は、ジェネリクスを基礎から勉強しないと駄目かもしれないです。
全く解らないです。
C++のテンプレートとは、やはり、かなり違うのですね。
まだ、ジェネリクスは、実行時に形が作られることくらいしか、知らないです。
836デフォルトの名無しさん:2011/11/21(月) 11:07:17.18
しか?
837デフォルトの名無しさん:2011/11/21(月) 11:08:28.95
.NETはTが引数なしのコンストラクタを持たなければならないという
制約を指定することでnew T()ができる
Javaでそれができないのは実装の都合
実行時に型が作られるんじゃなくて、実際はObjectで利用側のコードでダウンキャストを省略してるだけ
838デフォルトの名無しさん:2011/11/21(月) 11:08:39.38
かもしれない?
839デフォルトの名無しさん:2011/11/21(月) 11:27:56.09
VC++はMS拡張が凄まじくもう手が付けられないぐらいMSカオスになってるんでしょ?
840デフォルトの名無しさん:2011/11/21(月) 11:37:49.65
ArrayList<String> list = new ArrayList<String>(); list.add("a"); String s = list.get(0);
これは、コンパイルされて
ArrayList<Object> list = new ArrayList<Object>(); list.add("a"); String s = (String)list.get(0);
こうなる。ただこれだけの仕組み。Tに何が指定されてたかの情報は失われる。
だから new T() はTが何かに関わらず「常に」new Object() と同じなので意味がない。
T[] なんかも同様に Object[] になってしまう。
クソだろう? 互換性の都合。
841デフォルトの名無しさん:2011/11/21(月) 11:41:15.77
馬鹿には無理
842デフォルトの名無しさん:2011/11/21(月) 16:02:01.70
久しぶりにJavaを使うことになったけど全く覚えてないよ(つД`)
勉強し直したいんだけど最近のものでお勧めな本ってある?
843デフォルトの名無しさん:2011/11/21(月) 16:33:28.65
勉強しなおすだけならググって出たサイトをさらっと見れば問題ないんじゃね
844デフォルトの名無しさん:2011/11/21(月) 18:16:41.73
どの程度劣化してるかによるだろ。
845デフォルトの名無しさん:2011/11/21(月) 18:23:05.36
言語仕様みれば思い出すんじゃないの?
それよりツールのトレンドに付いていけるかじゃね?
846デフォルトの名無しさん:2011/11/21(月) 20:06:30.49
>>837
> .NETはTが引数なしのコンストラクタを持たなければならないという
> 制約を指定することでnew T()ができる

ワイルドカードと組み合わせたら鼻血が出そうだな
847820:2011/11/21(月) 21:20:02.59
>>840
解ってきました。丁寧に書いていただいて、ありがとうございます!
848デフォルトの名無しさん:2011/11/21(月) 23:54:05.53
>>846
849デフォルトの名無しさん:2011/11/22(火) 00:00:47.46
ちょっとググって見たけど、C#ってワイルドカードって無いんだな。
よく考えてみれば、実行時に型を取得可能ってことは、
コンパイル時に型変数を必ず何らかの型へ解決することが必要なんだよな。
new T() をやりたいがためにワイルドカードを捨てるってどうなのよ?
850デフォルトの名無しさん:2011/11/22(火) 00:01:48.36
ワイルドカードって?
851デフォルトの名無しさん:2011/11/22(火) 00:02:11.99
ふーん。
で、ワイルドカードの有無と new T() の関係は?
852デフォルトの名無しさん:2011/11/22(火) 00:44:08.43
ワイルドカードを使った型変数に、どうやってコンパイル時に型を当てはめる?
型が割り当てられなかったら、そこからどうやってインスタンスを生成する?
853デフォルトの名無しさん:2011/11/22(火) 01:02:16.70
ワイルドカード悪いやつだな!
854デフォルトの名無しさん:2011/11/22(火) 01:14:37.27
new 制約あればワイルドとか関係ない
そもそもJavaの話じゃないしスレちだが
855デフォルトの名無しさん:2011/11/22(火) 01:16:40.19
ワロタw
他言語のメタプログラミング知らなくてjavaが普通だと思ってたんだろ。許してやれよw
856デフォルトの名無しさん:2011/11/22(火) 01:25:46.98
メタプログラミング?
857デフォルトの名無しさん:2011/11/22(火) 01:29:00.15
C#はワイルドカードが使えないかわりに読み取り専用または
書き込み専用のインターフェースで共変と反変が使える
柔軟性は劣るけどワイルドカードよりはずっと分かりやすい
858デフォルトの名無しさん:2011/11/22(火) 01:46:30.98
>>854
Javaでnew T() が出来ないのは、
単に実装上の都合や互換性の都合(クソ?)のためだけではなく
ワイルドカード等を持つJavaの仕様から来ているのでは?
と言いたかったので、Javaの話

>>855
メタプログラミング?w
859デフォルトの名無しさん:2011/11/22(火) 01:49:03.62
実行時に型を取得可能なら当然実行時にnewすることもできる
つかワイルドカードならnew T()じゃなくてnew ?()になるんじゃないの
ワイルドカードじゃない方の制約と混同してるんだな
860デフォルトの名無しさん:2011/11/22(火) 02:03:00.34
仕様云々より使う側の組む能力の極端な不足を見せ付けられた。
861デフォルトの名無しさん:2011/11/22(火) 02:10:24.44
コンパイル時に型変数を解決しなければ、new制約は意味を成さないだろう。
動的に型を取ってきても意味がない。
つか、ワイルドカードは使う側の話で、new T() は呼び出される側の話だろ。例えばこう↓

class Data<T extends Test> {
public void func() {
T t = new T(); //※ここでエラーが出ます
}
}

class Invoker {
...
void invoke() {
for(Data<? extends Test> data : dataList) {
data.func();
}
}
862デフォルトの名無しさん:2011/11/22(火) 02:15:29.08
>>861
だからそれはJavaの実装に起因する問題。ワイルドカードは全く関係ない。
テンプレートや実行時展開方式なら実行時には必ずTに具体的な型が入ってるんだよ
863デフォルトの名無しさん:2011/11/22(火) 02:18:59.13
実行しないと型が入らないなら、new制約って意味ないじゃん
実行してみて、new制約に違反していたら例外でも投げるの?
それじゃ、new制約があってもなくても変わらん
864デフォルトの名無しさん:2011/11/22(火) 02:25:45.73
newのバインドは実行時でも制約のチェックはコンパイル時にできるだろう
思い込みで騒ぐ前にちょっとは視野を広げてみたら?
865デフォルトの名無しさん:2011/11/22(火) 02:33:58.59
ワイルドカードとか関係なく、インスタンスがあるなら
少なくともどっかでnew Data<HogeTest>()と型を具体的に指定してインスタンス作ってるはずで
そこでコンパイル時にチェックすればいいだけの話
それくらい知らなくてもちょっと考えたらわかりそうなもんだけど
866デフォルトの名無しさん:2011/11/22(火) 02:59:48.43
WebアプリのテストってJUnitとかTestNGとかでできるの?
867デフォルトの名無しさん:2011/11/22(火) 03:01:55.35
>>865
せやな
868デフォルトの名無しさん:2011/11/22(火) 03:22:10.70
>>866
Robotでおk
869デフォルトの名無しさん:2011/11/22(火) 06:20:07.28
>>855
「他言語のメタプログラミング」をいくつか具体的に挙げてもらえませんか?
870デフォルトの名無しさん:2011/11/22(火) 09:20:31.72
スレタイ
871デフォルトの名無しさん:2011/11/22(火) 19:21:42.72
>>870
e??
872デフォルトの名無しさん:2011/11/22(火) 20:23:25.20
型推論でインスタンスを生成すれば
具体的な型が当てはまらないようなものができそうだな
873デフォルトの名無しさん:2011/11/22(火) 20:38:11.83
型推論は型がコンパイル時に具体的に推論できるから型推論なの
874デフォルトの名無しさん:2011/11/22(火) 21:07:22.25
作ってみた。インスタンス p には具体的にはどんな型が割り当てられてる?

class A {}
interface I {}

public class P<T> {
static <T extends A & I> P<T> get() { return new P<T>(); }
public static void main(String[] args) { P <?> p = get(); }
}
875デフォルトの名無しさん:2011/11/22(火) 21:18:45.69
特殊化したジェネリック型をエントリーポイントとして使うことが可能なら当然 P<具体的な型>
それが許されないなら推論不可
876デフォルトの名無しさん:2011/11/22(火) 21:46:02.78
ジェネリックな型って、基本はどこかで P<型> と具体的に指定されるまで本来は実体が存在しないの。
型引数が完全には指定されてない状態ではインスタンス化も静的メンバへのアクセスも一切できない。
Javaは実装上そのへんがどうしても中途半端になってるから混乱しやすいんだが、本来は
「P<X> と書いた時点で PのTがXに置き換わった新しい型ができる」というだけの簡単な話なんだよ。
877デフォルトの名無しさん:2011/11/22(火) 22:04:32.74
Javaの話をしてたんじゃないのか
878デフォルトの名無しさん:2011/11/22(火) 22:12:12.37
ArrayListにaddしていってiteratorで順次取得したら
必ずaddした順番に出てきますか?
879デフォルトの名無しさん:2011/11/22(火) 22:12:42.25
Javaの話なら?が制約を満たさないので普通にコンパイルエラー
class B extends A implements I{}で
P.<B>get()に変えればそりゃ通るけどもw
880デフォルトの名無しさん:2011/11/22(火) 22:23:10.38
>>878
はい

Iが無ければ >>874 は P<? extends A> p = get(); で一見型引数が不定なインスタンスが作れてるように見えるが
これは単に P<A> だね。P<? extends A & I> p = get(); だとコンパイルエラー。
意図的に型引数が不定なインスタンスを作れなくしてるっぽい。
881デフォルトの名無しさん:2011/11/22(火) 23:23:21.26
>>879
古いEclipseだと何故かコンパイルが通らないことはあった。
882デフォルトの名無しさん:2011/11/22(火) 23:24:36.29
>>880
A は I を実装してないので、少なくともP<A>ではない。
883デフォルトの名無しさん:2011/11/22(火) 23:26:58.93
>>882
static <T extends A> P<T> get() に変えたら P<? extends A> p = get(); でコンパイル通るってこと
T extends A & Iのままだと? extends Aでは当然制約を満たさないのでコンパイルエラー
884デフォルトの名無しさん:2011/11/22(火) 23:29:53.10
1.6 の oracle の javac で通らねぇわ
言語仕様が変わったのか?何この糞言語
885デフォルトの名無しさん:2011/11/23(水) 00:26:48.44
仕様見てみたけど難解すぎワロス
そりゃ俺なんかより遥かに頭いい人たちが設計して実装してるんだろうけど
こんなもん実装どころか言語仕様にバグあっても全然不思議じゃないな
886デフォルトの名無しさん:2011/11/23(水) 01:30:23.82
おまえには無理でも、彼らにはできるんだよ。
887デフォルトの名無しさん:2011/11/23(水) 01:41:19.99
現にバグ出してるじゃないか
888デフォルトの名無しさん:2011/11/23(水) 02:05:31.17
JavaScriptってどのようなゲームが作れるのですか?
また、身近な物でJavaScriptを使っているのがあったら教えて頂きたい
889デフォルトの名無しさん:2011/11/23(水) 02:07:52.71
IE専用だが
http://www.smokymonkeys.com/triglav/

ちなみにここはJAVAスレだけど勘違いとかしてない?
890デフォルトの名無しさん:2011/11/23(水) 02:12:13.83
>>889
891デフォルトの名無しさん:2011/11/23(水) 02:17:12.61
>>889
ああっ!!!失礼しました
JavaとJavaScriptを間違えてました、すみません…
イタチスレチですみません、ではでは
892デフォルトの名無しさん:2011/11/23(水) 04:23:15.40
そういやごく最近JavaScriptでJVMを実装したって話し聞いたな
本格的にブラウザだけインストールしたらなんでもできる時代が来るかも試練ね!
893デフォルトの名無しさん:2011/11/23(水) 04:54:16.71
894デフォルトの名無しさん:2011/11/23(水) 07:51:49.47
sl: not foundだと・・・!?
895デフォルトの名無しさん:2011/11/23(水) 10:44:04.44
synchronized(obj){
}

これでobjをロックできますが
他の部分でobjにsynchronizedを使わずにアクセスしていたら
完全なロックは出来ないという理解で合っていますか?
つまりobjに対するアクセスで常にsynchronizedを使わなければ完全なロックはできない
896デフォルトの名無しさん:2011/11/23(水) 10:47:33.85
アクセスしたいオブジェクトをロックしないといけないわけでもなくて、他のオブジェクトでもいいけどな
objをロックしているというより、objをロックに使っている
同じオブジェクトをロックに使うsynchronizedブロックは同時に一つしか実行できないってこと
897デフォルトの名無しさん:2011/11/23(水) 10:53:43.08
いったいなにを読むと>>895みたいなオレオレ解釈が生じるんだ?
898896:2011/11/23(水) 11:31:33.05
失礼、ロックに使うというのは言葉の使い方が間違ってるな
同期化に使うに訂正
オブジェクトをロックするっていうのは特にそのオブジェクトの性質に影響を与えるわけじゃなくて
単純にsynchronized(obj) のところでobjがロックされていたらロックが解放されるまで待機し、
ロックが解放されて順番が回ってきたらロックしてブロックに入る仕組み
そのフラグみたいなのを便宜上ロックと呼んでるだけで、あんまりロックという言葉は気にしないほうがいいよ
899デフォルトの名無しさん:2011/11/23(水) 11:35:15.58
>>828
javaで生成遅延?
素直にpythonとか使っとけ。
というか、わからん。俺も知りたい
900デフォルトの名無しさん:2011/11/23(水) 11:39:46.41
生成遅延って何語だよ
901デフォルトの名無しさん:2011/11/23(水) 11:43:14.38
遅延生成じゃないの?
902デフォルトの名無しさん:2011/11/23(水) 11:43:41.31
事前に配列やリストにしないでfor each(拡張for)でループ回すときにはじめて一つずつ要素作るやつだろ
めんどくさいけどIterator<E>を実装すればできる
903デフォルトの名無しさん:2011/11/23(水) 11:45:58.23
ttp://d.hatena.ne.jp/lethevert/20070621/p2
こんなの?
ジェネレータのことか?
LasyList使えばいいのか?
904デフォルトの名無しさん:2011/11/23(水) 11:52:39.15
お。.NETとかのyield returnみたいなこと出来るのかな?
ちと読んでみるか
905デフォルトの名無しさん:2011/11/23(水) 11:56:26.61
PythonやC#のアレはスレッド使わないことに意味があるんでしょ
906デフォルトの名無しさん:2011/11/23(水) 12:23:26.49
もうJVM言語でいいじゃん
907デフォルトの名無しさん:2011/11/23(水) 12:23:35.30
python?
漢なら普通にjrubyでしょ。
908デフォルトの名無しさん:2011/11/23(水) 13:02:02.69
>>905
そうなん?
909デフォルトの名無しさん:2011/11/23(水) 13:27:32.13
ジェネレータちっくだが特に使い道がなかったでござる。
910デフォルトの名無しさん:2011/11/23(水) 13:35:58.46
ttp://code.google.com/p/infomancers-collections/
これなんかはどう?
いまexampleをみてるけど
911デフォルトの名無しさん:2011/11/23(水) 13:37:20.31
>>909
ジャバの単調なコーディング作業ばかりでそれを使うような場面に出逢ったことがないんでしょ
912デフォルトの名無しさん:2011/11/23(水) 13:44:09.00
>>910
d。俺も見てみる
>>911
Generatorの良さが出ないって意味だよ
913デフォルトの名無しさん:2011/11/23(水) 13:48:07.32
うーん。やっぱ似た構文どまりだな。
言語でサポートしてくれないと厳しいよな。わかってはいたが。
914デフォルトの名無しさん:2011/11/23(水) 13:48:17.04
>>908
いちいちスレッド切り替えてるとクソ遅くなるから、
C#や910のようにコンパイラが頑張って同期的なコードをステートマシンに変換してしまうのが望ましい
915デフォルトの名無しさん:2011/11/23(水) 13:51:51.17
>>914
ほんとそう思う。ごった煮で良くも悪くも汚れたC#だから出来ることだな。
設計思想とかは好きだが、手を入れたくなると限界がくるよなJavaって。
916デフォルトの名無しさん:2011/11/23(水) 13:52:20.92
>>914
ジャバはそもそも糞だし切替えると遅くなるからか
それなら一理あるね
917デフォルトの名無しさん:2011/11/23(水) 13:57:27.05
今日も明日も MS + WINDOWS + DIRECTX + C# はやっぱり最強ってことでおk?
918デフォルトの名無しさん:2011/11/23(水) 14:00:35.44
んーなことはない。
あそびが少ないってだけ。
919デフォルトの名無しさん:2011/11/23(水) 14:07:31.93
ほんとはVMレベルでマイクロスレッドがサポートされたら一番なんだけどな
無理にコンパイラで完結させようとすると失敗するのはジェネリクスが証明している
920デフォルトの名無しさん:2011/11/23(水) 17:35:52.93
GAEではなく一般的なTomcat6サーバでJavaMailを使用したいのですが、
Transport.send(message)のところで、

com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'mail' or call 'Send()' was not found.

となってしまいます。
mail.jarとactivation.jarは/WEB-INF/libに配置してあり、パスは通っています。
921デフォルトの名無しさん:2011/11/23(水) 18:37:20.94
ふむふむなるほど
922デフォルトの名無しさん:2011/11/23(水) 18:41:16.11
ふむふむなるほど
923デフォルトの名無しさん:2011/11/23(水) 19:33:09.11
ふーん
924デフォルトの名無しさん:2011/11/23(水) 19:33:29.68
めんどくさいやつらだな・・・
925デフォルトの名無しさん:2011/11/23(水) 20:32:34.02
>>920
自分は GAE は知らないけど、
普通に Tomcat 上で動かすアプリで JavaMail 使ってたよ。
例外見る限り、その GAE  用に JavaMail になんか小細工してるコードを、
そのまま「一般的なTomcat6サーバ」で動かそうとしてるのが問題なんじゃないの?
926デフォルトの名無しさん:2011/11/23(水) 21:26:41.74
Map<byte[], Integer>
こういうマップを使いたいんですが
普通にHashMapとかで作ってもキーが同一性比較になるので

byte[] k1 = new byte[] { 0 };
byte[] k2 = new byte[] { 0 };

map.put(k1, 1);
Integer r = map.get(k2);

このコードでrはnullになりますよね。
byte[]の同値性比較のマップが欲しいんですがどんな方法がありますか?
927デフォルトの名無しさん:2011/11/23(水) 21:31:54.12
ラッパーを作ってhashcode()をオーバーライドかねぇ
928デフォルトの名無しさん:2011/11/23(水) 21:34:27.32
hashcodeじゃダメだけどね
929デフォルトの名無しさん:2011/11/23(水) 21:35:59.36
charの配列にコピーして文字列にするとか
930デフォルトの名無しさん:2011/11/23(水) 21:42:25.75
ラッパー作って equals(), hashCode() をオーバーライド。
931デフォルトの名無しさん:2011/11/23(水) 22:24:19.68
標準APIだけでやるならByteBuffer使う
932デフォルトの名無しさん:2011/11/23(水) 23:37:31.11
バイト配列がキーっていうのは何かのスメル
933ケンシロウ ◆Or5xFGjg0. :2011/11/24(木) 11:43:56.00
内部クラスのprivate宣言は、その親クラスからもアクセスできるんです(><;)
934デフォルトの名無しさん:2011/11/24(木) 12:11:03.91
JSPに記述してある複数のリンク先ページを1つのJSPで実現するにはどうすればいいですか?
例)
a.jsp内にA,B,Cへの3つのリンクがある。
この3つのページを3つのJSPではなく1つのJSPで表現したい。
935デフォルトの名無しさん:2011/11/24(木) 20:02:44.88
タブ文字を明示的に表現するために、\\tとしたいのですが、
str.replace("\t", "\\t");としても駄目っぽいです。

どうしたらいいですか?
936935:2011/11/24(木) 20:05:15.25
すみません・・ できました。返却結果を文字列で受け取るんですね・・

strがそのまま変換されるとおもっていました・・

すみませんでした。
937デフォルトの名無しさん:2011/11/24(木) 20:34:45.61
二つ質問させて下さい

if(tinpo.equals(penis)){
}

をelseを使わないでノットイコールにするのにはどうしたらいいんでしょうか?

あとsqlの話で申し訳ないのですが
where句のなかで

table.id >= ?

というものを見かけたのですが?って何なんでしょう
938デフォルトの名無しさん:2011/11/24(木) 21:25:53.59
>ノットイコール
boolean is = tinpo.equals(penis);
if( !is ){}
if( is == false ){}
どちらか。

>?って何なんでしょう
「わかんなーい」という意味です。
バインド変数、もしくはPreparedStatementで調べてください。
939デフォルトの名無しさん:2011/11/25(金) 00:35:34.78
>>937
mank...
940デフォルトの名無しさん:2011/11/25(金) 07:39:23.18
>>938
ありがとうございます
941デフォルトの名無しさん:2011/11/25(金) 15:05:51.53
フィールドで宣言された変数は使いまわしても特に問題はないのでしょうか?
942デフォルトの名無しさん:2011/11/25(金) 15:26:01.77
>>937
普通に if(!tinpo.equals(penis)){} じゃ駄目なの?
943デフォルトの名無しさん:2011/11/25(金) 17:09:48.53
>>941
死ぬ
944デフォルトの名無しさん:2011/11/25(金) 17:12:17.51
>>937
>?って何なんでしょう
インテロゲーション・ポイント
945デフォルトの名無しさん:2011/11/25(金) 19:39:39.14
インポか
946デフォルトの名無しさん:2011/11/25(金) 20:27:58.46
for文とwhile文の使い分けはどのようにすればいいのですか?
どちらも同じ繰り返し文なんで、ふと疑問に思いました。
947デフォルトの名無しさん:2011/11/25(金) 20:33:58.86
ループカウンタが必要かループ回数が決まってるならfor
948デフォルトの名無しさん:2011/11/25(金) 21:00:06.11
拡張forが使える場合もforにするかな。
List<Foo> fooList = new ArrayList<Foo>();
for( Foo foo : fooList ) { }

古い書き方だと
for ( Iterator<Foo> f = fooList.iterator(); f.hasNext(); ) {
Foo foo = f.next();
}
949デフォルトの名無しさん:2011/11/25(金) 23:56:32.55
forの式が2つ空になるようなら迷わずwhileにするが、1つ空は悩む
950デフォルトの名無しさん:2011/11/26(土) 02:49:56.84
List<String> list;
...
for(String e : list){
//proc
}

こういうコードで、なぜか1つしか入っていない要素が2回procに来る。
forに入る前、1回目のproc時どちらでブレークしてlistの中身をチェックしてみても
listに1個しか入っていない要素なのに、なぜか2回procに来る。
2回来る要素はオブジェクトIDが同じで、当然、値も同じ。
1つしか入ってないオブジェクトなのに2回出てきてるとしか思えない。
そしてDrop To Frameした後に再実行すると、今度は1回しか出てこない。
アプリケーション起動後の初回実行時のみ2回出てくるという怪現象。

エスパー様はおりませんか?
951デフォルトの名無しさん:2011/11/26(土) 02:59:16.36
拡張for文の中で何回目のループか知りたい時に
別途カウンタ変数を用意する以外で何か方法はありませんか
952デフォルトの名無しさん:2011/11/26(土) 03:35:51.26
普通のforにする
953デフォルトの名無しさん:2011/11/26(土) 08:38:27.73
>>926
ヘキサダンプの文字列をnew String(hex)してハッシュコード返す
954926:2011/11/26(土) 18:21:10.99
>>953
PC再起動したら出なくなった
955デフォルトの名無しさん:2011/11/26(土) 22:11:34.83
フィールド変数を複数宣言したときのアノテーションについてですが、
次のような場合、アノテーションが適用されるのは変数[a]だけでしょうか?


class Hoge{
@Inject
Integer a, b, c;
}
956デフォルトの名無しさん:2011/11/26(土) 22:46:02.38
a, b, c 全部に適用される
957デフォルトの名無しさん:2011/11/27(日) 02:19:19.80
シングルトンのinstanceとかgetInstance()ってクラスの最後に書いたほうがいいとかある?
958デフォルトの名無しさん:2011/11/27(日) 08:08:19.65
どうでもいい
そんなこと気にするくらいならまずシングルトンを使わないことを考えるべき
959デフォルトの名無しさん:2011/11/27(日) 09:42:47.37
え?
960デフォルトの名無しさん:2011/11/27(日) 10:02:05.59
>>957
staticなメンバはふつークラスの頭に持ってくるよな。
コンストラクタの前か後かで流儀は割れると思うが
961デフォルトの名無しさん:2011/11/27(日) 10:09:29.72
は?
962デフォルトの名無しさん:2011/11/27(日) 11:45:37.91
あるフォルダの連番テキストファイルを結合したいのですが、正規表現について教えてください。
aaaa1.txt と aaaa2_2.txtというファイル名が有ったとして、
それぞれaaaa1をファイル名、1を連番数字
aaaa2_をファイル名、2を連番数字として抽出したいのです。
どう表現したらよいでしょうか?
963デフォルトの名無しさん:2011/11/27(日) 13:23:07.32
964デフォルトの名無しさん:2011/11/27(日) 14:18:00.91
String型の配列HogeName[]のHogeName[i]を変数名に使いたいんですが、何か良い方法はありますでしょうか?

String[] HogeName = new String [number]
for ( int i = 0 ; i < number ; i++ ) { HogeName[i] = str(i+1)+"番目の変数" }

でHogeName[]の中に名前を作ってみたんですが、型宣言にどうやって使うかわからず・・・お願いします。
965デフォルトの名無しさん:2011/11/27(日) 14:22:47.61
エスパーきぼんぬ
966デフォルトの名無しさん:2011/11/27(日) 14:24:48.27
どういう意図で配列要素の値を変数名に使いたいのかわからんけど、
エスパーするに、Map はあなたの問題の解決にならんの?
967デフォルトの名無しさん:2011/11/27(日) 16:19:40.19
フィールド変数名でいいんなら考えてやれないこともない
968962:2011/11/27(日) 18:12:28.78
こういう正規表現を考えてみたけどgroup(2)とgroup(3)の区別はどうするんでしょうか?
Javaの実装なのでお願いします。
final String regex = "^(([a-zA-Z_-]+)|^([a-zA-Z_-]+\\d+[_\\-]))(\\d+)\\.txt$";
969デフォルトの名無しさん:2011/11/27(日) 18:31:51.70
>>968
>>963のスレはJavaもOK
970964:2011/11/27(日) 19:21:22.31
何か見当違いな質問をしたようですいません。
任意の数の変数にそれぞれ順番をつけて用意したいのです。
たとえば、int型で三個用意したいならint Hoge1,Hoge2,Hoge3;とすればいいのですが、
入力に応じて数を増やしたいので、k個ならint Hoge1, ... ,Hogek;と宣言したいと考えています。
971デフォルトの名無しさん:2011/11/27(日) 19:27:46.37
>>970
なぜそんなことをしたいのか、を君が説明できれば
みんなが別のいい方法を教えてくれると思うよ。
972353:2011/11/27(日) 19:27:47.59
>>970
普通にやるなら、
int[] hoge = new int[入力に応じた数];
だけど、それじゃダメなの?

どうしてもhoge1とかhoge2とかでやりたいなら >>966 の言うとおりMapあたり使うのがいいんじゃない?
973デフォルトの名無しさん:2011/11/27(日) 19:59:13.35
仮に宣言できたとして、
どうやってそれを使うんだ
974デフォルトの名無しさん:2011/11/27(日) 20:01:48.21
すいません、質問させてください。

Javaの練習で簡単なSkypeみたいなチャットアプリを作りたいのですが、会話履歴を表示する部分のレイアウトをどうやったらいいのかが分からず悩んでいます。

Swingライブラリを使って、左に発言者の画像を表示してその右に発言メッセージ内容を表示。
この2つのセットを発言があったら下から上に流れていくようにしたいのですが、どのパーツを使えばいいのでしょうか・・・?

(現在JTextAreaを使っているのですが、画像が表示でき無いので。。。)
975デフォルトの名無しさん:2011/11/27(日) 20:29:13.24
JTextPane使えばいいじゃん
976デフォルトの名無しさん:2011/11/27(日) 21:51:09.97
>>970
      r ‐、
      | ○ |         r‐‐、
     _,;ト - イ、      ∧l☆│∧     良い子の諸君!
    (⌒`    ⌒ヽ   /,、,,ト.-イ/,、 l  
    |ヽ   ~~⌒γ ⌒ ) r'⌒ `!´ `⌒)    よく頭のおかしい技術者やデザイナー気取りのバカが
   │ ヽー ―'^ー-'  ( ⌒γ ⌒~~ /    「誰もやらなかった事に挑戦する」とほざくが
   │  〉    |│  |`ー^ー― r' |      大抵それは「先人が思いついたけどあえてやらなかった」ことだ。
   │ /───| |  |/ |  l  ト、 |      基礎が何故大切か理解できない人間にまともな商品は開発できないぞ!
   |  irー-、 ー ,} |    /     i
   | /   `X´ ヽ    /   入  |
977デフォルトの名無しさん:2011/11/27(日) 23:28:53.28
たぶん彼がしたいのはリフレクションでフィールドに数値いれるとかじゃない?
978デフォルトの名無しさん:2011/11/27(日) 23:35:26.96
次の糞スレはどこ?
979デフォルトの名無しさん:2011/11/28(月) 00:25:42.85
>>978
★★ Java の宿題ここで答えます Part 71 ★★
http://hibari.2ch.net/test/read.cgi/tech/1309076891/
980デフォルトの名無しさん:2011/11/28(月) 01:41:31.77
糞スレとうとう併合されてしまうのけ
981デフォルトの名無しさん:2011/11/28(月) 01:56:48.85
何度もすいません、かなり煩雑ですが具体的にやってることを書かせて頂きます。

ProcessingのControlP5というライブラリを用いて、n個の図形を好きな場所に配置するような事をしようとしています。
「n個」を入力すると図形の位置を決める二次元スライダー(この名前がHoge1からHogen)がn個出てくるようにしたい。

二次元スライダーが持ってる値はHoge1.arrayValue()[0]のようなカタチでしか受け取れない(?)ようなので、
Hoge1からHogenまで、逐一名前をつけなければいけないようです。
n個の変数名に拘っているのはこれが理由です。そこで、

Slider2D Hoge1 , Hoge2 , ... , Hogen ;
for ( int i = 1 ; i <= n ; i++ ) {
rect( よこ , たて , Hoge i .arrayValue()[0] , Hoge i .arrayValue()[1] );
}
とすればよいと考え、
String[] HogeName[] = { Hoge1, Hoge2, ... ,Hogen} を作って、その要素を変数名に使えたらと質問しました。

情報の小出しやそもそも必要な情報がわからないのは典型的なアホですね・・・。精進します。
とりあえず提案頂いたMapというのを見てみようと思います。
982デフォルトの名無しさん:2011/11/28(月) 02:16:43.62
Map以前に配列を知らないとは・・
983デフォルトの名無しさん:2011/11/28(月) 02:16:53.01
どっからProcessingが出てきたんだ。
専用スレがあるから検索しろ
984デフォルトの名無しさん:2011/11/28(月) 02:21:57.84
Slider2D[] Hoge = new Slider2D[N];
でがまんしとけ

985964, 970, 981:2011/11/28(月) 03:37:59.68
あああすいません配列で簡単にできました。恥ずかしすぎます
解読しようとしてくださった方々、ありがとうございました。。。
>>984 一瞬でできました。ありがとうございます
986デフォルトの名無しさん:2011/11/28(月) 04:40:31.86
Stringの配列は使えてるじゃんと思いきや文字列代入してないし…笑えんレベル
987デフォルトの名無しさん:2011/11/28(月) 10:13:24.19
>>982
ワロタw
988デフォルトの名無しさん:2011/11/28(月) 20:14:29.10
次スレは何処?
989デフォルトの名無しさん:2011/11/28(月) 21:03:51.86
★★Java質問・相談スレッド149★★
http://hibari.2ch.net/test/read.cgi/tech/1318935200/
ここかな
990デフォルトの名無しさん:2011/11/28(月) 22:11:07.64
以下のようなプログラムを作りました。すべての配列の大きさは同じです。
hairetuは引数の配列を使って新しい配列を返すメソッドでkeisanは引数の配列を使ってdouble値を返すメソッド,hyouziは引数の配列を表示するメソッドです。

public static void main(String[] args) {
double [][]a = ・・・・;
double [][]b = ・・・・;
      int n = a.length;
      double [][]A = hairetu(a,b,n);
System.out.println(keisan(A,n));
}

public static double keisan(double [][]A,int n){
・・・・
return x;
}

public static double[][] hairetu(double[][]a,double[][]b,int n){
double [][]y = new double[n][n];
・・・・
y = ・・・・;
hyouzi(y,n);
return y;
}

public static void hyouzi(double[][]a,int n){
・・・・・
}

hyouziメソッドでは配列は正しく表示されるのですがSystem.outのところがすべての要素がNaNの配列が表示されてしまいます。
keisanメソッドは値を返すようにしたのですがなぜでしょうか?
991デフォルトの名無しさん:2011/11/28(月) 22:27:14.79
エスパーの誕生をお待ちください
992デフォルトの名無しさん:2011/11/28(月) 22:28:48.92
keisanの中身を晒せ
関係ないけど配列のスペースの入れ方キモイ
普通 double[][] y だろ
993デフォルトの名無しさん:2011/11/28(月) 22:39:43.92
>>992
C出身者なら double **y のつもりでそう書くんじゃないか?

>>990
System.outって(少なくとも>>990には)1個しかないじゃないか。
「配列が表示されてしまいます」って何だ?
「NaNが表示されてしまいます」ならまだ意味はわかるけど。
994デフォルトの名無しさん:2011/11/29(火) 02:50:34.05
>>992
本見たらdoule[][] yと書いてありました。記憶違いしてたみたいです・・・
エラー出来ないので気づきませんでした。ありがとうございます。
keisanは以下の通りです。配列の列の和が最大になる列の和を返すメソッドです(∞ノルム)
public static double keisan(double [][]A,int n){
       double a=0.0;
double x=0.0;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
  a=a+Math.abs(A[i][j]);
}
if(a>=x){
x=a;
}else if(a<x){
break;
}
a=0.0;
}
return x;
}

>>993
配列を返すメソッドについてネットを見ながら書いてみたんですがうまくいきませんでした。
System.outでkeisanで返された値が表示されると思ったんですがNaNばかりの配列が表示されてしまいます
995993:2011/11/29(火) 03:53:22.45
>>994
別に間違ってないように思える。
強いて言えば、x は 0.0 ではなくて -∞ で初期化すべきということか。
(∞ノルムが負になる場合を考慮)
正しいAが与えられているのなら、正しい結果が表示される筈。

しかしやっぱり「NaNばかりの配列が表示されてしまいます」の意味がわからない。
System.out.println が吐いた文字列をそのまま書きこんでくれ。
それと、Java の場合 n は外から与えるより A.length を見た方がスマートだと思うぞ。
996993:2011/11/29(火) 03:54:19.47
ああ、ごめん。ノルムは正値だったね。ボケてたわ。
初期化の件は無視して欲しい。
997デフォルトの名無しさん:2011/11/29(火) 14:12:04.55
Struts1.2のActionMessageについて質問です。

メッセージは通常とエラーの2種類あると思うのですが、「警告」という3種類目を増やしたい場合はどうすれば良いのでしょうか。

何となくでは
1. Globals.WARNS みたいな定数を定義
2. Action#saveWarns() みたいなメソッドの追加
3. taglibにhtml:warn みたいなカスタムタグの追加
が必要なのかなと思っています。

これが足りない、みたいなのがあれば教えてください。
998デフォルトの名無しさん:2011/11/29(火) 18:00:59.48
うんこスレ埋め
999デフォルトの名無しさん:2011/11/29(火) 18:36:57.61
UTF-8ってカナや漢字に使えないんだな
外人も使うチャットで文字セットは何を使うべきかね?
1000デフォルトの名無しさん:2011/11/29(火) 18:55:16.40
今日も何か、バカなことを思いついたやつがいるらしいな。
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。