【初心者】Java質問・相談スレッド106【大歓迎】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/09/19(水) 11:39:13JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc10.2ch.net/hp/
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド105【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1188228705/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
次スレは>>980あたりで。
0002デフォルトの名無しさん
2007/09/19(水) 12:25:420003デフォルトの名無しさん
2007/09/19(水) 12:37:26逸物
0004デフォルトの名無しさん
2007/09/19(水) 14:50:24単純にビューに線や四角などを描きたいだけなんですが、
うまく動きません。どうすればいいのでしょうか?
GCをゲットして、線を描くように書いたのですが、
何も表示されません。
public class HogeView extends ViewPart{
public void createPartControl(Composite parent) {
final Canvas canvas = new Canvas(parent, SWT.NONE);
canvas.addPaintListener(new PaintListener(){
@Override
public void paintControl(PaintEvent e) {
// GC取得
final Image image = new Image(parent.getDisplay(), canvas.getBounds());
final GC gc = new GC(image);
// 描画
gc.drawLine(50, 50, 100, 100);
}
});
}
}
ref.
http://www-06.ibm.com/jp/developerworks/opensource/library/os-eclipse-brand/index.shtml
0005デフォルトの名無しさん
2007/09/19(水) 15:06:0900064
2007/09/19(水) 15:21:22早速のレス有難う御座います。
レイアウトマネージャ入れてみましたが駄目でした。
無しでもLabel等は表示されました。
IBMのサイトの例に従って書いてるのですが・・・
0007デフォルトの名無しさん
2007/09/19(水) 15:46:25IBMの方には、event.gc.drawImage って書いてあるんですけど…
0008デフォルトの名無しさん
2007/09/19(水) 16:08:41JTextPaneを使って折り返し処理をしたいのですが、そのような機能は実装できるでしょうか?
折り返し処理が出来るか出来ないかによって、行番号を付ける方法も変わってくると思うので
どなたかアドバイスお願いします。
0009デフォルトの名無しさん
2007/09/19(水) 16:21:12何でこんなのが流行ってんすか?
0010デフォルトの名無しさん
2007/09/19(水) 16:24:15何でこんなのが流行ってんすか?
0011デフォルトの名無しさん
2007/09/19(水) 16:26:02脳内流行を妄想の外に出すなよ
0012デフォルトの名無しさん
2007/09/19(水) 16:48:200013デフォルトの名無しさん
2007/09/19(水) 16:48:220014デフォルトの名無しさん
2007/09/19(水) 16:59:47( ´_ゝ`)フーン. それで?
0015デフォルトの名無しさん
2007/09/19(水) 17:05:31( ´_ゝ`) 起動時間・・・・。
0016デフォルトの名無しさん
2007/09/19(水) 17:08:40いつまでもそんな古いをPC使うのはやめたらどうだ
0017デフォルトの名無しさん
2007/09/19(水) 17:14:22フーンとか恥ずかしすぎw
0018デフォルトの名無しさん
2007/09/19(水) 17:30:16それを短い時間で行うことが出来るのが優秀なエンジニア。
ようは、ハサミだけで優劣は付けられない。
>>9
まあ使えば分かる。
00194
2007/09/19(水) 17:57:01見落としていました。すいません。
ただ引き続き問題があって、一部しか表示されません。
そこは今から何とかやります。
有難う御座いました。
0020デフォルトの名無しさん
2007/09/19(水) 18:11:38List<Pair<Map<Character, Integer>, String>> list;
とか。C++のtypedefみたいな物があれば良いんだが、Javaにはないし、
継承で擬似的にtypedefを行うのは下のページで言われてるとおりだめだし。
IBM dW : Java technology:Javaの理論と実践:疑似typedefアンチパターン - Japan
http://www-06.ibm.com/jp/developerworks/java/060310/j_j-jtp02216.shtml
前スレの話じゃないけど、関数やクラス名のエイリアスだけでもできるようにしてくれないかな?
0021デフォルトの名無しさん
2007/09/19(水) 18:19:050022デフォルトの名無しさん
2007/09/19(水) 18:22:490023デフォルトの名無しさん
2007/09/19(水) 18:38:02俺はそっち全然知らんのだけど。
0024デフォルトの名無しさん
2007/09/19(水) 18:45:47何をよ?
typedefなら、出来てるじゃん>>20
アンチパターンに指定されちゃってるけど
0025デフォルトの名無しさん
2007/09/19(水) 19:00:18むしろ、外部との通信はOS毎に扱えるフレーバーが違い過ぎて
まともに受け取れるのはURLlist位しかないから実用レベルではjava内部での使用が限界。
利用もJListやJTreeのDnD対応がほとんどだろう。
0026デフォルトの名無しさん
2007/09/19(水) 21:05:13ニートの俺がやってみましたよっと。
JMFを紹介しておいてなんだが、…このフレームワーク使いづれぇなオイ。
とりあえず参考ページ
http://java.sun.com/products/java-media/jmf/2.1.1/solutions/Seek.html
http://java.sun.com/products/java-media/jmf/2.1.1/solutions/FrameAccess.html
作ったコードはこれ。こんなんで勘弁してくれ。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29700
0027デフォルトの名無しさん
2007/09/19(水) 21:23:160028デフォルトの名無しさん
2007/09/19(水) 23:49:49JOGLRenderer書いたことあるが慣れると細かくモジュール化されてるから必要最低限の実装で使い回し利いて結構使いやすいよ。
けどwinの標準ラッパーはDirectX側のバグだらけでDirectXの情報追わないとキツイ。
0029デフォルトの名無しさん
2007/09/20(木) 00:45:26Eclipse上のJREで動作するんですが、jarにしてダブルクリック実行をすると例外が発生します。
Caused by: javax.activation.UnsupportedDataTypeException: no object DCH for MIME type text/plain; charset=iso-2022-jp
at javax.activation.ObjectDataContentHandler.writeTo(Unknown Source)
at javax.activation.DataHandler.writeTo(Unknown Source)
Java 6.0のrt.jarに javax.activationが含まれているようで、
どうもこれが、ライブラリとして指定したmail1.4でメールを送信しようとした時、activation1.1と競合してしまっているようです。
なにか対処方法あるでしょうか?
003029
2007/09/20(木) 00:47:50-- application.jar (MANIFISTにlib/mail.jar等を設定)
|-lib
|- mail1.4.jar
|- activation1.1.jar
ユーザーはダブルクリックでapplication.jarから起動します。
0031デフォルトの名無しさん
2007/09/20(木) 01:45:57ごみ箱の中身を見たいわけじゃなく、ファイル削除でごみ箱に移動させたいんだが。
0032デフォルトの名無しさん
2007/09/20(木) 07:13:28そこに移動すればいいんじゃない?
0033デフォルトの名無しさん
2007/09/20(木) 07:45:21適当なこと言うなよ。Windowsのゴミ箱はそんな簡単な仕組みじゃなかったはず。
・・・とはいうものの、俺もはっきりした方法は知らんのだが。
ちょっと調べた限りでは、やはりAPI呼ぶしかなさそうだな。
0034デフォルトの名無しさん
2007/09/20(木) 08:18:240035デフォルトの名無しさん
2007/09/20(木) 11:26:59それは間違いないと思う。たしかLinuxのゴミ箱は、>>32のいうとおりディレクトリそのものだったから。
事実、ゴミ箱のあるパーティションとは別のパーティションで、ゴミ箱に入れると、
ファイルがパーティション間でコピーされる。
0036デフォルトの名無しさん
2007/09/20(木) 11:40:33できたのですが、実行すると下記の様なエラーが表示されました。
どういう意味でしょうか??
Exception in thread "main" java.sql.SQLException: [Microsoft][ODBC Microsoft Acc
ess Driver] インデックス、主キー、またはリレーションシップで値が重複しているので
、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、イ
ンデックスを削除してください。または重複する値を使用できるように再定義してくださ
い。
at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6879)
at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7036)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3065)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:338)
at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:
288)
at Test.updateExec(Test.java:82)
at TestData.main(TestData.java:29)
0037デフォルトの名無しさん
2007/09/20(木) 11:42:30斜め読みだが、作ろうとしてるテーブルのフォーマットが不正か、
すでにあるテーブルを再度追加してエラーになってきる気がする。
どっちも俺がよくやったエラー。
0038デフォルトの名無しさん
2007/09/20(木) 12:11:03プライマリキーのカラムに同じ値つっこんでるとか。
テストでデータ突っ込むのに全部同じレコード入れようとしてると、エスパー
0039デフォルトの名無しさん
2007/09/20(木) 13:00:40JTextPaneを使っているんですけど、フォントの設定がもうほんっとにめんどくさいです。
JTextAreaなら
textArea.setForeground(Color.BLACK);
textArea.setFont(new Font("Serif", Font.BOLD, 30));
で済むところがJTextPaneを使うと
attribute = new SimpleAttributeSet();
StyleConstants.setBold(attribute, true);
StyleConstants.setForeground(attribute, Color.BLACK);
StyleConstants.setFontFamily(attribute, "Serif");
StyleConstants.setFontSize(attribute, 30);
・・・・・・
Fontクラスで一括指定できたりしないんですかね?これ
0040デフォルトの名無しさん
2007/09/20(木) 13:13:11JAVAでゲーム作りますが何か?の基礎ページを見ながら
初めてJAVAを学ぼうとしているのですが、
サンプルのjarファイルを落として解凍してから、圧縮までは出来るようになりました。
それで中のwavファイルを取り出し、
自分で用意したwavファイルをフォルダの中にいれて、
取り出したwavファイルと同じ名前にして圧縮すると、
jarファイルが正常に動作しません。
解決方法を教えてください。
0041デフォルトの名無しさん
2007/09/20(木) 13:29:55「質問です。
JAVAでゲーム作りますが何か?」まで読んで喧嘩売ってんのかと思った。
それはともかく、考えられるのは、自分で用意したwavファイルっていうののフォーマットが違うとかじゃない?
たしかwavにも何種類かあったような。あとありそうなのは、極端に大きなwavファイルだとか。
たしかあのサイトはSEぐらいにしかwavつかってなかった気がするから、大きなwavファイルは想定してないかも試練。
0042デフォルトの名無しさん
2007/09/20(木) 13:47:14一括で設定できるような便利メソッドを一回書けば、後はそれを使いまわせばいいだけだと思うが。
0043デフォルトの名無しさん
2007/09/20(木) 13:48:56ヒントをありがとうございます。
真空波動研でjarファイルに元々あったwavを調べたら、8bitだったので、
入れようとしていたwavファイルも8bitで入れたら無事動いて音も変えることが出来ました。
0044デフォルトの名無しさん
2007/09/20(木) 13:55:03試しに同じことをやってみたが、正常に動作する。
その程度の説明では、何かやり方が間違ってるんだろうとしか言い様がない。
正常に動作しないっていうところを、もっと詳しく。
コマンドラインから起動してみたら何かエラーメッセージが出るか?
004544
2007/09/20(木) 13:57:080046デフォルトの名無しさん
2007/09/21(金) 05:12:06新たに生成してコピーしなければなりませんか?
concat関数のような追記はできないんでしょうか。
もしそうなら、スマートな方法をご教授お願いします。
0047デフォルトの名無しさん
2007/09/21(金) 05:23:29ArrayListじゃダメな理由は?
>「質問です。JAVAでゲーム作りますが何か?」まで読んで喧嘩売ってんのかと思った。
壮大に吹いたw
0048デフォルトの名無しさん
2007/09/21(金) 05:36:221.6以降で Arrays.copyOf(arrayOfString, newLength) とか使えば?
0049デフォルトの名無しさん
2007/09/21(金) 08:18:55つまり、>>46はconcatのように一つのStringに文字を付け足したいんじゃないのか?
それなら、文字通りString.concatっていうメソッドがあるからそれを使えばいい。
もしくは、大量の追加がある場合、StringBuilderを使えばパフォーマンスも落ちない。
0050デフォルトの名無しさん
2007/09/21(金) 08:28:370051デフォルトの名無しさん
2007/09/21(金) 08:58:49>>46が単に配列ってだけ書いてれば俺もそう思うが、
String配列っていうのがあやしくないか?
0052デフォルトの名無しさん
2007/09/21(金) 09:13:090053デフォルトの名無しさん
2007/09/21(金) 10:57:38byte型配列に読み込む処理を書いてます。
読み込みに使っているのは、郵政省のダウンロードサービスにある、
郵便番号CSVデータ。
ttp://www.post.japanpost.jp/zipcode/dl/oogaki/lzh/ken_all.lzh
読み込み処理の流れは、
(1) RandomAccessFile -> FileChannel -> ByteBuffer
-> ByteArrayOutputStream -> WritableByteChannel -> byte[]
(2) RandomAccessFile -> FileChannel -> MappedByteBuffer -> byte[]
の2通りを試しており、ループで100回まわして処理速度を測っているんですが、
(1):高速だがメモリの消費量多い。
(2):低速だがメモリの消費量は少ない。
という結果になりました。こんなもんですかね?
Pen4-2.8GHz、RAM1GB、JDK6、VMのヒープサイズは256Mですが、
(1)の処理速度:約140ms
(1)での消費メモリ:約32MB
(2)の処理速度:約3000ms
(2)での消費メモリ:約11MB
という感じです。
0054デフォルトの名無しさん
2007/09/21(金) 11:59:22jdbc使ってたらひどく疲れた。
0055デフォルトの名無しさん
2007/09/21(金) 12:04:02ファイル全体を丸ごと読むだけなら、こうじゃない?
RandomAccessFile file = new RandomAccessFile("hogehoge", "r");
byte[] data = new byte[(int) file.length()];
ByteBuffer buffer = ByteBuffer.wrap(data);
while (buffer.hasRemaining()) {
file.getChannel().read(buffer);
}
file.close();
0056デフォルトの名無しさん
2007/09/21(金) 12:14:03それは別の処理でやってるんだけど、
巨大なファイルの一部分だけを、低負荷で読み込みたいので。
0057デフォルトの名無しさん
2007/09/21(金) 12:25:26コード示せ。でなきゃ何の検証も提案もできん。
0058デフォルトの名無しさん
2007/09/21(金) 12:33:33DBじゃないのに何で索引出来るんだよw
0059デフォルトの名無しさん
2007/09/21(金) 13:04:200060デフォルトの名無しさん
2007/09/21(金) 13:12:24CharBuffer cb;
Matcher lm = linePattern.matcher(cb)
Matcher pm = null;
CharSequence cs = lm.group();
pm = pattern.matcher(cs);
とかやって、正規表現検索とかできるんだけど。
0061デフォルトの名無しさん
2007/09/21(金) 13:24:37006253
2007/09/21(金) 13:25:51public byte[] readTest1(FileChannel inputChannel) throws IOException{
int inBuffSize = 1024 * 16;
ByteBuffer inBuff = ByteBuffer.allocate(inBuffSize);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
WritableByteChannel outChannel = Channels.newChannel(baos);
while (true) {
inBuff.clear();
if(inputChannel.read(inBuff) < 0){
break;
}
inBuff.flip();
outChannel.write(inBuff);
}
outChannel.close();
return baos.toByteArray();
}
public static byte[] readTest2(FileChannel inputChannel) throws IOException {
byte[] data = new byte[(int)inputChannel.size()];
MappedByteBuffer buf = inputChannel.map(FileChannel.MapMode.READ_ONLY, 0, inputChannel.size());
buf.get(data);
buf = null;
return data;
}
0063デフォルトの名無しさん
2007/09/21(金) 13:44:061の方が高速とは信じられん
006462
2007/09/21(金) 13:56:27これらのコードを、
String file = "C:\\temp\\KEN_ALL.CSV";
FileChannel ch = new RandomAccessFile(file, "r").getChannel();
for (int i = 0; i < 100; i++) {
// readTest1(ch);
readTest2(ch);
}
こんな感じで使ってみたのですが、
やっぱりreadTest2のほうが全然遅いのです。。。
実行は、Eclipse上からなのですが。
0065デフォルトの名無しさん
2007/09/21(金) 14:03:34そのテストコードは変だよ。
ファイルを開きなおすか、せめてファイルポインタを先頭に戻さなきゃ、2回目以降は何も読み込んでいないよ。
006664
2007/09/21(金) 14:05:43ループ中で、各回での処理時間を計ったら、
2回目以降がゼロ。。。。orz
Eclipse落として、吊ってきます。。。
006764
2007/09/21(金) 14:11:50ch.position(0);
// readTest1(ch);
readTest2(ch);
}
にしたら、readTest2のほうが早かったです。
お騒がせしてすみませんでした。
0068デフォルトの名無しさん
2007/09/21(金) 18:22:26エディタで質問があるのですが
現在TeraPadを使用してコードを書いているのですが
下記の条件を満たしてる開発環境エディタ?はないものでしょうか?
1)
printlnと打ちたかったのにprintlmと打ってしまったときなど
printlnは正しいので赤文字で表示
Printlmは謝っているので黒文字のまま表示される
打ち間違えが一目瞭然になる
2)
入れ子が下のような感じになっているとき
{
{
{
}
}
}
一番上の{に文字入力のカーソルを持っていくと それに対応した一番したの}が強調される
わかり憎い説明だと思いますがあったら教えていただけないでしょうか
0069デフォルトの名無しさん
2007/09/21(金) 18:26:55エディタじゃないとだめ?
0070デフォルトの名無しさん
2007/09/21(金) 18:30:46初めてなのでサンプルコードと見比べて記載ミスを探すのがを探すのが一苦労で、、、
0071デフォルトの名無しさん
2007/09/21(金) 18:32:31入力ミスによるコンパイルエラーの類は一切無くなるはず
0072デフォルトの名無しさん
2007/09/21(金) 18:34:33ありがとう
ちょっとグーグル先生のところいってきます
0073デフォルトの名無しさん
2007/09/21(金) 19:05:36ご教授ください…。。。
0074デフォルトの名無しさん
2007/09/21(金) 19:47:560075デフォルトの名無しさん
2007/09/21(金) 22:01:30char c = String.format("\u3001").charAt(0);
0076デフォルトの名無しさん
2007/09/21(金) 23:32:44誰か答えてくれぬか?
0077デフォルトの名無しさん
2007/09/22(土) 01:06:12>>76
デフォルトのrt.jarより先に検索させるために、
java -Xbootclasspath/p:lib/mail1.4.jar;lib/activation1.1.jar -jar application.jar
でいけないかい?パスのところとかは適当に実態に合わせてくれ。
Xbootclasspath/p:オプションは変な配置の仕方をするとライセンス違反になるから気をつけて。
007877
2007/09/22(土) 01:26:16まあ、activation1.1.jarの方だけrt.jarより優先させればいいのなら、
mail1.4.jarの方はクラスパスにさえあればいいかもしれないが。
0079デフォルトの名無しさん
2007/09/22(土) 10:52:20newAudioClipを使って数個のwavを同時に再生しているのですが、
それぞれの音量を個別に変える(muteでもOK)ことは可能でしょうか?
midiだと音量の調節ができそうなのですが、waveだとマニュアルを読んでも
それらしい記載が見つかりませんでした。
0080デフォルトの名無しさん
2007/09/22(土) 11:01:04Xbootclasspathってjar起動からでも利用できるのか?
と調べてみたら、記述すれば有効になるらしい
Boot-Class-Path: hogehoge.jar
0081デフォルトの名無しさん
2007/09/22(土) 11:45:32例、Alt+Spaceでウィンドウメニュー表示 など
0082デフォルトの名無しさん
2007/09/22(土) 11:52:20何の話をしてるんだ?
0083デフォルトの名無しさん
2007/09/22(土) 12:55:21あー、jarオプション付きの起動では利かないのか。
試しでやった時はマニフェストでMain-Class一行書くのも面倒だったから
java -Xbootclasspath/p:myrt.jar -cp hoge.jar MainClassみたいに
classpathで指定して動かしたから気がつかなかった。
008483
2007/09/22(土) 13:02:300085デフォルトの名無しさん
2007/09/22(土) 13:11:22Applet#newAudioClipが返すAudioClipは単純な再生しかできないので
Java Sound API(javax.sound.**)を利用
0086デフォルトの名無しさん
2007/09/22(土) 14:02:07jarに固める時、マニフェストファイルでシステムプロパティを記述する事はできますか?
0087デフォルトの名無しさん
2007/09/22(土) 16:13:33こういう事?
http://www.microsoft.com/japan/enable/products/keyboard/windowsxp.mspx
何をしたいのか分からないが、OS依存だと思われ。
0088デフォルトの名無しさん
2007/09/22(土) 17:55:19SwingならLnFに実装されてるんじゃない?
各LnFのソース読んでみたら?
いくつか共通項くらいあると思う。
実装依存であることは確かだけど、どのレベルで実装されてるかはツールキット次第。
0089デフォルトの名無しさん
2007/09/22(土) 18:55:55呼び出すメソッドを変えるプログラムを作っています。
今作ってるソースコード
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29709
009089
2007/09/22(土) 18:59:51で、switch文のcaseを全部無視して
defaultまで処理が飛んでしまいます。
switch文を正しく機能させるには何が足りないのでしょうか?
ご教授をお願いします。
0091デフォルトの名無しさん
2007/09/22(土) 19:03:52何これ
0092デフォルトの名無しさん
2007/09/22(土) 19:09:43swich文なんて使う必要はない
0093デフォルトの名無しさん
2007/09/22(土) 19:11:370094デフォルトの名無しさん
2007/09/22(土) 19:11:580095デフォルトの名無しさん
2007/09/22(土) 19:24:58ある
0097デフォルトの名無しさん
2007/09/22(土) 20:42:52File.createNewTempFile()で作ったファイルをstaticなMapに入れてkeyと結びつけておく、
みたいなことを考えています。
テンポラリファイルの方は、よく「VMの正常終了時に削除」という説明がありますが、
static変数の厳密な生存期間はいつまでなのでしょうか。
0098デフォルトの名無しさん
2007/09/22(土) 20:48:11どこからも参照されなくなってから、VMの終了までのどこかまで
変数の生存期間とファイルの生存期間の相関関係がサッパリ解らん
0099デフォルトの名無しさん
2007/09/22(土) 20:50:000100デフォルトの名無しさん
2007/09/22(土) 21:05:55どんな?
0101デフォルトの名無しさん
2007/09/22(土) 22:09:06せっかくJavaで作ってるんだから
多態とか調べてみたらどうかな?
0102デフォルトの名無しさん
2007/09/23(日) 05:35:16わからないことがあったので教えていただけないでしょうか?
ttp://www.techscore.com/tech/Others/Hibernate/03.html
ここの
Book.class
ってなんですか?
java.lang.Objectのプロパティでしょうか?
APIみたけどメソッドしか書いてないですよね?
HibernateのAPI見たら
an "empty" instance of the persistent class
とあったんですけど、なんとなくイメージはわくのですが
Book.classというのが具体的に何が入ってるのか、解説していただけないでしょうか?
もしくは詳しいサイトを教えていただけると助かります。
お願いします。
0103デフォルトの名無しさん
2007/09/23(日) 06:14:26いらっとくるなぁ。皮肉たっぷりに罵ってやりたいところだ
http://www.techscore.com/tech/Others/Hibernate/02-3.html
0104デフォルトの名無しさん
2007/09/23(日) 09:02:08ということは、VMの終了時まで生存が保証されるわけではないということですね。
ありがとうございました。
0105デフォルトの名無しさん
2007/09/23(日) 09:30:08なにがどう解決したのか解らんけど、>>98に書いてあるようにファイルの生存期間なのか?
変数の生存期間なのか、どっちなんだよ
0106デフォルトの名無しさん
2007/09/23(日) 10:59:28一次元ならSystem#arraycopyを使えばいいことはわかるのですが、
それ以上だとシャロウコピーになってしまい、使えません。
標準のメソッドがありましたら、是非教えてください。よろしくお願いします。
0107デフォルトの名無しさん
2007/09/23(日) 11:05:290108デフォルトの名無しさん
2007/09/23(日) 11:26:485次元配列とか平気で使ってそうな勢いだ。
使えないのはSystem#arrayCopyじゃなくてお前だろwwww
0109デフォルトの名無しさん
2007/09/23(日) 13:55:26System#arraycopyはシャロウコピーしかやってくれないと思うが。
ディープコピーとシャロウコピーの違いが分からずに使っているのか?
0110102
2007/09/23(日) 14:05:46レスありがとうございます。
質問がわかりずらくてすいません。
Classインスタンスというのでしょうか、java.lang.Classというクラスをしらなかったもので
Book.classという式の意味がわからなかったんです。
ttp://www.ne.jp/asahi/hishidama/home/tech/java/reflection.html
ttp://www1.u-netsurf.ne.jp/~ysk-net/JRoom/Programming/theme3.html
この辺でわかりました。
別件でちょっと気になっていたのですが
動的に取得するインスタンスを変える方法も判りました。
0111デフォルトの名無しさん
2007/09/23(日) 14:06:31○ わかりづらくて
0112デフォルトの名無しさん
2007/09/23(日) 14:15:45説明不足ですみません。
配列をプリミティブ型の配列とする場合、一次元配列でSystem#arraycopyを使えば問題なくコピーできます。
ですが、二次元配列以上でSystem#arraycopyを使うと、配列自体がコピーされるので、コピー元の要素を変更した場合、
コピー先の要素にも変更が及びます。
つまり、二次元以上でも配列の構造すべてをコピーしてくれるようなメソッドがほしいのです。
0113デフォルトの名無しさん
2007/09/23(日) 14:26:16int[][][] x = 〜〜〜;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
new ObjectOutputStream(baos).writeObject(x);
int[][][] y = (int[][][]) new ObjectInputStream(new ByteArrayInputStream(baos.toArray())).readObject();
0114デフォルトの名無しさん
2007/09/23(日) 14:51:23そうです。こんな方法があったんですね・・・。
レスありがとうございました。
0115デフォルトの名無しさん
2007/09/23(日) 15:07:060116デフォルトの名無しさん
2007/09/23(日) 15:08:100117デフォルトの名無しさん
2007/09/23(日) 15:16:46質問が抽象的すぎる。もっと具体的にわかりやすく書け。
0118デフォルトの名無しさん
2007/09/23(日) 16:19:010119デフォルトの名無しさん
2007/09/23(日) 18:03:14StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER);
というコードを書き加えてみたのですが、何の変化も起こりません。エラーも出ません。
どうすればいいんでしょうか。
import javax.swing.*;
import javax.swing.text.*;
public class TextPaneTest extends JFrame{
public static void main(String[] args){
TextPaneTest test = new TextPaneTest();
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test.setVisible(true);
}
TextPaneTest(){
setTitle("TextPaneTest");
setBounds(10, 10, 300, 200);
JTextPane textPane = new JTextPane();
getContentPane().add(textPane);
DefaultStyledDocument doc = new DefaultStyledDocument();
SimpleAttributeSet attr = new SimpleAttributeSet();
StyleConstants.setAlignment(attr, StyleConstants.ALIGN_CENTER);
String str = "テスト";
try{
doc.insertString(0, str, attr);
} catch (BadLocationException ble) {
System.err.println("初期文書の読み込みに失敗しました。");
}
textPane.setDocument(doc);
}
}
0120デフォルトの名無しさん
2007/09/23(日) 18:21:59docにAttributeSetの設定してる?
0121デフォルトの名無しさん
2007/09/23(日) 18:34:130123デフォルトの名無しさん
2007/09/23(日) 18:43:31その挿入した文字のみ中央揃えを適用させたいんだ?ちがうよね?
0124デフォルトの名無しさん
2007/09/23(日) 19:03:08うまくいきました。
htmlのdivとspanと同じような関係ですね。
スレ違いのようでしたが、どうもありがとうございました。
0125デフォルトの名無しさん
2007/09/23(日) 19:23:21やさしいJavaという本を読んだ後、2chでお奨めのCoreJavaという本を買ってきたんだけど、
double x = points[i].getX() - SIZE / 2; だのが書かれてて、.getX()って何?
Javaというかプログラミング言語ってこんなに複雑になるもんなの?と焦りぎみ。
みんな基礎レベル(やさしいJava修了レベル)から、こんな複雑なコード書けるようになるまで、
どんな風に勉強したの?配列にしても、ArrayList<Employee> staff = new ArrayList<Employee>();
とか何がなにやら…
世間では簡単と騒がれているけど、やっぱりオブジェクト指向(これの意味すらよく理解してない)の言語よりも
オブジェクト指向でない言語をしっかり勉強してからJavaをやった方がいいのかな?
C言語かスキームからやり直してみようと思ってるんだけど…
0126デフォルトの名無しさん
2007/09/23(日) 19:29:49それは日本語にすると
ポイントの配列のiのところからXをとってきて、サイズの半分で引いた物を変数に突っ込む。
Point p = points[i];
double x = p.getx;
x = x - SIZE / 2;
こんな風に変数に書き分けながら書くこともできるけど、この程度なら1行で書いた方が楽なんでしょう
なにか作りたい物があるなら、実際に作ってみたらどうかね
0127デフォルトの名無しさん
2007/09/23(日) 19:34:01コアJavaはそりゃ読めないだろ入門レベルも終えてないのに。
やさしいJavaが基礎レベルってのはありえない。
getX() が習得できてないのは入門レベルですらあり得ない話。
ArrayListも配列じゃないし、newの意味しらんだろ、おまえさん。
JavaとかCとかの前にまともな入門書をちゃんと読めよ
0128デフォルトの名無しさん
2007/09/23(日) 19:40:10いや、Javaから始めることは可能だろうけど、ちょっと呼んでる本がレベル高杉じゃないかな。
もっと簡単な本から初めて見たら?
0129デフォルトの名無しさん
2007/09/23(日) 19:44:43まあ昔読めなかった本が後で役に立つことってよくあるから
0130デフォルトの名無しさん
2007/09/23(日) 19:45:08読んだ本が低杉、それで基礎レベル習得とか言わないでくれと思う
0131125
2007/09/23(日) 20:05:15やさしいJava→CoreJavaって、中1レベルの英語をマスターしたから、赤本やってみるかというくらい無謀なの?
じゃあ、本当の基礎レベルの本って何がいいのかな?
0132デフォルトの名無しさん
2007/09/23(日) 20:11:24赤本まではいかないかもしれないが、中1から高1くらいの差はありそうだな
中1だと、My name is Java. と書く、としか習わないだろ。
やさしいJavaには、どれが主語で述語はどれでこれが名詞だからっていうような基本文法がほとんど書いてない。
0133デフォルトの名無しさん
2007/09/23(日) 20:40:250134125
2007/09/23(日) 20:49:27newってオブジェクトを参照する為に使うんじゃないの?
Javaはポインタのない言語と前にどこかのWebサイトか立ち読みした本に書いてあったけれど、
これ、ポインタってやつじゃ…
>>132
なるほど。たしかに中1レベルではMy name is うんちゃらとかしか習いませんね。
SVOにしても高1になってきちんと習ったので、一通りの触りルールは分かったけれど、
言語を使えるというレベルにはまだ全然達していないという事なんだね。
現段階は白チャートすら始まってない状態なので、Javaの白チャート的な書籍を紹介してください。
0135デフォルトの名無しさん
2007/09/23(日) 20:50:07------
入門者向け推薦図書 †
2chで推薦されている入門書を挙げておきます。
* コアJava2 Vol.1 基礎編
* コアJava2 Vol.2 応用編
* Head First Java―頭とからだで覚えるJavaの基本
* 独習Java
「やさしいJava」(高橋 麻奈 著)はプログラミング未経験者が読むには適していますが、 Java入門書とは呼べません。
Javaプログラミングとはこういうものなんだ、というのをつかんだら上記入門書をやるのをお勧めします。
---------
この記述のせいか
0136デフォルトの名無しさん
2007/09/23(日) 20:53:03このリストはどうみてもプログラムを知ってる人間が、
新しくJavaを習得するためのもんだな。
プログラム初心者がこれを読むのはかなりきついだろう。
0137デフォルトの名無しさん
2007/09/23(日) 20:53:13newはオブジェクトを作るときに使うっすよ。
Javaはポインタのない言語ってよりは、ポインタを意識する必要のない言語っす。
0138デフォルトの名無しさん
2007/09/23(日) 21:01:00Javaから入ったからCのポインタの使い方が分かった、って人もいる。俺とか
0139デフォルトの名無しさん
2007/09/23(日) 21:03:46ただ、最近は参照っていってもわかってもらえなかったりする。(´・ω・`)
0140デフォルトの名無しさん
2007/09/23(日) 21:04:22残念ながらJavaでしっかりと基礎からできる入門書はほとんどない。
逆に言えばCの入門書を軽くやって独習Javaあたりに入るのがベストだったりする
これは先にCをやれとかって話じゃなくて、入門書として充実しているのがないって話。
もしくは、Rubyだけど、これが評判いい。
http://www1.tf.chiba-u.jp/~shin/tutorial/
0141デフォルトの名無しさん
2007/09/23(日) 21:22:08確かにRubyやPython試してみるのもいいかも
わからないことを対話型シェルで試す癖が付く
いきなりSchemeはお勧めしない。Javaよりずっと難しいから
本だと『Javaを独習する前に読む本』お勧め
読書ガイド付きで次に進むべき道も見えるのがまたイイ
あとプログラミングは簡単っていうのは基本的に嘘なので気にしない
特に独学でやってる人にとっては
ttp://www.yamdas.org/column/technique/21-daysj.html
0142デフォルトの名無しさん
2007/09/23(日) 21:25:03それなら勉強したもん勝ちだな
0143デフォルトの名無しさん
2007/09/23(日) 21:36:57高校2年あたりで触り始めて大学4年間みっちり勉強したならば、社会人になったあたりで5年のアドバンテージを得られる。
しかし、これを大学時代さぼっていたり未経験からリカバリするのは並大抵の努力では無理。
おまけに仕事として与えられるのはプログラミングとは限らない。
0144デフォルトの名無しさん
2007/09/23(日) 22:08:55CoreJavaが難しいんじゃなくて他のjavaの本がゴミだらけで選択肢が狭まってるだけだと思うんだが・・・。
CoreJavaより上に来るのはオライリーのSwing本やEfectiveJavaやjava言語仕様の書籍版あたりだろう。
まあ、やさしいシリーズはCからXMLまであるがCはまだマシとして他はカスだから。
やさしいjava読む暇があればJavaDoc読んだ方が勉強になる。
0145デフォルトの名無しさん
2007/09/23(日) 23:21:480146デフォルトの名無しさん
2007/09/23(日) 23:37:33技術本って漫画より著者に来る印税多かったはずだけど技術本は人選ぶし。
Eclipseとjava周りはバージョン上がる度に新版出しまくれば良いだけだから劣化量産されるわけだな。
MS製品と違って更新早いとこういう害がある。
0147デフォルトの名無しさん
2007/09/24(月) 00:21:220148デフォルトの名無しさん
2007/09/24(月) 00:23:44まずプロパティ→簡易編集モードにチェックを入れる
コピーしたい箇所をマウスで選択してEnterでコピー
ペーストしたい場合は右クリック
0149デフォルトの名無しさん
2007/09/24(月) 00:28:2010年もプログラミングの勉強をしている人は稀ってことだよね?
10年勉強するぐらい当たり前だろ、と突っ込んでしまうところでした
高卒は勉強する習慣なさそうだけど・・・
0150143
2007/09/24(月) 00:47:23当たり前の筈なんだがな。
俺もまともにプログラミングを勉強し始めたのは大学3年あたり。
今年でやっと10年になるが、やっと初心者は卒業したかな、と思える程度だわ。
最近はいくらでも勉強する時間が欲しい
0151デフォルトの名無しさん
2007/09/24(月) 00:50:11ファイルの生存期間が満了する前に、その所在を覚えているstatic変数が死ぬ場合が
ありえるかどうか、ということです。
0152デフォルトの名無しさん
2007/09/24(月) 00:52:55勉強したければ一旦ニートになるといいかも
俺今そんな状態
でも金は貯めといた方がいい
俺は親元に住んでるから大して支出は無いけど
ちなみにプログラミング歴は8年目
0153デフォルトの名無しさん
2007/09/24(月) 00:53:24bbb.javaからaaa.java内にあるtableのセルの内容を変えたいんですが、
aaa aj = new aaa();
aj.jTable.setValueAt("ああああ",0,6);
で変えられないんですがどうしたら良いでしょうか。
もう自分でも何言ってるかわかんね。
0154デフォルトの名無しさん
2007/09/24(月) 01:03:13ファイルの生存期間と変数の参照はまったく別の次元の話
0155デフォルトの名無しさん
2007/09/24(月) 01:09:34いま新しく new で作ったテーブルを操作してるんじゃないか?
0156デフォルトの名無しさん
2007/09/24(月) 01:10:27「ファイルの生存期間」ってなんだよ。
エクスプローラでファイルを削除するまでって意味か?
0157デフォルトの名無しさん
2007/09/24(月) 01:16:57中間ファイルの生存期間ってことだろ?
0158156
2007/09/24(月) 01:19:160159150
2007/09/24(月) 01:24:41正直なところニートというか、大学か院にいきたいわ。
理学部は出たんだが大学時代はさぼりまくりだったしw
とはいえ、家族いるから無理な話。
0160デフォルトの名無しさん
2007/09/24(月) 01:38:40public Rect intersection(Rect r){
Rect result = new Rect((this.x1 > r.x1) ? this.x1 : r.x1,
(this.y1 > r.y1) ? this.y1 : r.y1,
(this.x2 < r.x2) ? this.x2 : r.x2,
(this.y2 < r.y2) ? this.y2 : r.y2);
if(result.x1 > result.x2) { result.x1 = result.x2 = 0; }
if(result.y1 > result.y2) { result.y1 = result.y2 = 0; }
return result;
例えばthisを(3,3,1,6)、r1を(1,1,3,4)としたときこのメソッドは(0,3,0,4)
という値を返します。
なぜこのif文があるのか理解できません。教えてください。
0161デフォルトの名無しさん
2007/09/24(月) 01:46:40実際にif文を取り払って実行してみればわかるんじゃないか?
0162デフォルトの名無しさん
2007/09/24(月) 01:49:19aaa.javaのjTableを呼び出せてないってことですか?
0163デフォルトの名無しさん
2007/09/24(月) 01:51:33x1 > x2 とか y1 > y2 って状態が不正なんじゃねーの?
文書化されてなければ、書いた人間の意図なんぞ分からん。
> 例えばthisを(3,3,1,6)、r1を(1,1,3,4)としたときこのメソッドは(0,3,0,4)
> という値を返します。
返さんと思うぞ。
0164デフォルトの名無しさん
2007/09/24(月) 02:03:58インスタンスってもんを理解する必要がある。
例えば
aaa x = new aaa();
aaa y = new aaa();
aaa z = new aaa();
とやると、同じ aaa クラスのインスタンスが 3 個できる。
aaa がテーブルを 1 個持ってたとして、aaa が 3 個あるわけだから、テーブルもそれぞれ別々に 3 個あることになる。
つまり同じ aaa のテーブルでも、「x のテーブル」 と 「y のテーブル」 と 「z のテーブル」 は別々だ。
x のテーブルに何か書き込んでも、y のテーブルにも z のテーブルにも影響しない。 別々だからな。
153 は、
aaa aj = new aaa();
aj.jTable.setValueAt("ああああ",0,6);
と書いた。 これは、それまで存在していたのとは別の、新しい aaa クラスのインスタンスを作っている。
新しい aaa インスタンスは、それまで存在していたのとは別の、新しいテーブルを持ってる。
新しく作った aaa のテーブルに "ああああ" を設定しても、それまで存在していた aaa のテーブルは変わらない。
だから新しく aaa を作るんじゃなくて、すでに存在している aaa を操作しなきゃいけない。
0165160
2007/09/24(月) 02:29:02>>161
if文消すと(3,3,1,4)と出力されました。書いて計算しても同じになりました。
図も描いてみましたが重なった部分と一致します。
>>163
すみません、r1は(1,1,4,4)でした。
文章化はされていません。
>thisの矩形とrの矩形が重なる矩形領域を返すメソッドです。
↑これがコメントとして添えられているだけです。
いまだになぜif文があるのか、あったとしても0にする必要すらわかりませんorz
あきらめて先に進んだほうがいいのでしょうか?
0166デフォルトの名無しさん
2007/09/24(月) 02:32:210168125
2007/09/24(月) 04:12:47まとめてみた結果、
・Ruby、Pythonをやってみる
・Schemeはお勧めしない
という事でおkですか?
個人的に計算機プログラムの構造と解釈を読んだ感じでは、
JavaよりSchemeの方が分かりやすかったのですが。
0169デフォルトの名無しさん
2007/09/24(月) 04:40:530170125
2007/09/24(月) 04:45:19なぜ半世紀にもわたって、難解と言われているSchemeを教えていたのでしょうか?
他の大学でも大きめの所はSchemeを一番最初のプログラミングの授業で教えているみたいですが、
多くの大学はJavaやC++を最初の言語として教えています。この差はいったい?
0171デフォルトの名無しさん
2007/09/24(月) 08:44:26わかりやすくありがとうございます。
基本がわかってなかったですね・・・
0172デフォルトの名無しさん
2007/09/24(月) 08:47:25本屋やサイトはないでしょうか?
0173デフォルトの名無しさん
2007/09/24(月) 10:04:42Schemeは難解ではない。むしろ単純。
俺は最初にやるプログラミング言語としてはJavaより向いていると思っている。
ただ、Javaなどと考え方が大きく異なるので、
Java漬けにされた人間からはとても異質なものに見え、
それで難解だと思われてしまう。
0174141
2007/09/24(月) 11:06:31色々とよくご存知で
SICPには評価モデルもOOPライクなメッセージパッシングも出てくるし
少なくともやさしいJavaとSICPの最初の一章を読んだのなら
double x = points[i].getX() - SIZE / 2が意味不明ってことは考えにくい
結論としては釣られた俺涙目
0175デフォルトの名無しさん
2007/09/24(月) 13:52:11つftp://ftp.oreilly.co.jp/download/hfj2_sample_ch02.pdf
0176デフォルトの名無しさん
2007/09/24(月) 14:58:43SSL認証のログインをするクライアントを作りたいのですが、どのようなことから入ればよいでしょうか?
参考にすべきサイト、書籍などありましたらそちらも挙げていただけると助かります。
0177デフォルトの名無しさん
2007/09/24(月) 15:22:10なにか勘違いしてないか
0178デフォルトの名無しさん
2007/09/24(月) 15:25:510179デフォルトの名無しさん
2007/09/24(月) 15:40:25JMFを使って動画を再生させることはできたのですが、いかんせん説明が英語ばっかりで肝心のRGB値に関してはさっぱりです。
動画の再生といってもttp://www.02.246.ne.jp/~torutk/jmf/howtouseJMF_programming.htmlのプレーヤが走っただけですが・・・
RGB値をとってくるにはどうすればいいでしょうか?お願いします。
0180デフォルトの名無しさん
2007/09/24(月) 18:35:21ラスター画像が取得できれば後はどうにでもできる。
1フレームtoラスター画像への変換はフォーマットの仕様が分からないとどうしようもない。
これで分からんならJMF使う以前の問題。動画を勉強汁。
0182179
2007/09/24(月) 21:30:59まさか残りわずかな状態で書いたのにレスがついているとは思いませんでした。
26さま、本当にすいません。そしてありがとうございます。
さっそく動かしてみます!!ほんとにありがとうございます。
また必ず報告しにきます!
179さま、動画の勉強もしますm(_ _)m
とりあえず、ググって勉強します。
0183デフォルトの名無しさん
2007/09/24(月) 22:35:370184デフォルトの名無しさん
2007/09/24(月) 22:50:29そう、エンティティBeanの後継
0185デフォルトの名無しさん
2007/09/24(月) 23:34:44人間的にはお前の方がずっと良い奴だよ。
気にスンナ
0186デフォルトの名無しさん
2007/09/25(火) 09:48:37} catch (Exception e) {
e.printStackTrace();
}
ここのe.printStackTrace()で出力される内容と同じ文字列を
取得したいのですがどうしたらよいでしょうか?
e.toString();
ですとソースの行番号などが出てくれません。
0187デフォルトの名無しさん
2007/09/25(火) 09:58:22StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw));
String str = sw.toString();
0188デフォルトの名無しさん
2007/09/25(火) 10:09:150189デフォルトの名無しさん
2007/09/25(火) 10:50:44ありがとうございます。完璧です!!
0190デフォルトの名無しさん
2007/09/25(火) 10:54:48テーブル構造のデータを扱うのに便利なAPIなどありませんでしょうか?
現在は、ArrayListやHashMapでやってますが、不便です。
0191デフォルトの名無しさん
2007/09/25(火) 11:03:210192デフォルトの名無しさん
2007/09/25(火) 11:17:180193デフォルトの名無しさん
2007/09/25(火) 11:17:29何もOracleとかPostgresみたいな大層なバックエンドを用意しなくても、DerbyとかHSQLDBとかそういうのを。
0194デフォルトの名無しさん
2007/09/25(火) 11:25:04>>191さん
二次元配列・・・確かにそれがいいんでしょうね。
項目が4つ以上あると、MapやListだとやたらに増えて
管理が難しくなってきます。
浅海さんの記事に該当するっぽいのがあって二元配列を使ってます。
http://www.asahi-net.or.jp/~DP8T-ASM/java/articles/index_ja.html
>>193さん
DerbyとかHSQLDBはローカルで使うのにもいいんでしょうか。
ちょっと(多分帰宅後に)調べてみます。
0195デフォルトの名無しさん
2007/09/25(火) 11:41:22どう不便なのかを書いてくれないと解らん。
データクラスの1次元配列でいんじゃねーのか。
0196デフォルトの名無しさん
2007/09/25(火) 12:12:51embeddedならH2マジおすすめ
0197デフォルトの名無しさん
2007/09/25(火) 13:54:57そうかもしれません。
実際、そういう実装の部分もあり、
そのままにするつもりですし、新たに作るかも。
>>195
例えば、
多->1の対応はHashMapで良いのですが、逆の
1->多だと、HashMapでキーからリストへのマップで実現しています。
(根本的に間違ってる気がする・・・)
HashMapのキーはArrayListで持ってます。
表の縦・横をArrayListで保持して、
値は二次元配列で実現している部分もあります。
(これはしょうがないかも)
こういうのが、それぞれ複数あります。
ツギハギしてる内にこうなりました・・・
これを今後のためにも整理したいです。
HSQLDBのインメモリモードって言うのは、
メモリでDBを保持してAppletでも使えるみたいですね。
http://d.hatena.ne.jp/keyword/HSQLDB
次の記事が組込の参考になりそう
使ってみようApache Derby
http://journal.mycom.co.jp/articles/2006/10/11/derby/menu.html
色々整理してみます。情報ありがとうございました。
0198デフォルトの名無しさん
2007/09/25(火) 14:58:11final double L2=120;
final double RH=L1+30;
final double L3=L1/2.0;
doule [][] xRoof{{0,0,L3,L3},{L1,L3,L3,L1}};
doule [][] yRoof{{L1,L 1,RH,RH},{L1,RH,RH,L1}};
doule [][] zRoof{{0,L2,L2,0},{0,0,L2,L2}};
doule [][] xDoor{L3,L3+10,L3+10,L3};
doule [][] yDoor{10,10,40,40};
doule [][] zDoor{L2,L2,L2,L2};
こういう記述をすると";"がありませんと出るのですが
どこが間違ってるのかわかりません。
教えてください。
バージョンは1.4.1です
0199デフォルトの名無しさん
2007/09/25(火) 15:01:51○double [][] xRoof = {{0,0,L3,L3},{L1,L3,L3,L1}};
あと、配列の次元数がおかしくないか、下の 3 つ。
0200デフォルトの名無しさん
2007/09/25(火) 15:21:23下3つはドアみたいな感じで付け足してみたんですが…
0201デフォルトの名無しさん
2007/09/25(火) 16:49:52コメントアウトするとかできないのかよw
0202デフォルトの名無しさん
2007/09/25(火) 17:28:02結局、次の記事そのままで動きました。
使ってみようH2 Database Engine - 最強の呼び声もあるすごいヤツ
http://journal.mycom.co.jp/articles/2006/10/12/h2/005.html
ちなみに、H2のマニュアルP26に書いてありますが、
memory onlyで動かすには、ソースの
Connection conn = DriverManager.getConnection
("jdbc:h2:MyDB", props);
で、"jdbc:h2:mem:"に変えるだけです。
0203デフォルトの名無しさん
2007/09/25(火) 17:52:57よく考えると、DB関連って、Serializableじゃないから、
Servlet間の移動とかは元データでして、
利用直前にDBに入れて取り出さないと駄目だな・・・
それでも多分問題ないと思うけど。
0204デフォルトの名無しさん
2007/09/25(火) 17:57:390205デフォルトの名無しさん
2007/09/25(火) 18:14:19クラス、コンストラクタ、インスタンスの役割みたいなのがいまいちわかっていないので
よく説明できているHPあったら教えていただけないでしょうか
ヨロシクお願いします
0206デフォルトの名無しさん
2007/09/25(火) 19:27:49インスタンスはクラスをメモリ上に読み込んだ物
コンストラクタは、メモリ上に読み込むときにあれこれ初期化したりするのに使う
デストラクタって言葉が頭に浮かんできた。
あれはC言語だっけ?
0207デフォルトの名無しさん
2007/09/25(火) 19:49:39これを嫁。
http://www.bk1.jp/product/02691739
0208デフォルトの名無しさん
2007/09/25(火) 20:11:36いや、C++。GCのないOOP言語でインスタンス内のリソースを解放するために使う。
というか、コンストラクタもデストラクタもクラスの機能なので、構造体しかないC言語には当然ない。
0209デフォルトの名無しさん
2007/09/25(火) 20:12:550210デフォルトの名無しさん
2007/09/25(火) 20:53:11インスタンスは、たこ焼き。
0211デフォルトの名無しさん
2007/09/25(火) 21:07:340212デフォルトの名無しさん
2007/09/25(火) 21:51:36SwingではsetDefaultCloseOperationですが、AWTでの方法を教えてください。
Win Vista + Eclipse 3.2 + Java 1.6.0
0213デフォルトの名無しさん
2007/09/25(火) 22:06:390214デフォルトの名無しさん
2007/09/25(火) 22:11:030215デフォルトの名無しさん
2007/09/26(水) 00:08:52それはファクトリクラスとファクトリが生成するインスタンスの関係だろ。
クラスとインスタンスの説明するなら車の設計図と車とか言えよw
0216デフォルトの名無しさん
2007/09/26(水) 00:13:42クラスはたい焼きの型で
インスタンスはたい焼き
なんて書いてある入門書が沢山売れてたりするんですよ
0217デフォルトの名無しさん
2007/09/26(水) 00:20:440218デフォルトの名無しさん
2007/09/26(水) 00:30:050219デフォルトの名無しさん
2007/09/26(水) 00:49:270220デフォルトの名無しさん
2007/09/26(水) 01:27:37それだとOOPの説明してるのにオブジェクトという抽象的な概念が説明できなくてメタクラス辺りのメタな話に突入してしまう気が・・・。
「じゃあ鯛焼き機はどうやってつくるの?」みたいに聞かれない?
クラスをオブジェクトではなく構文や仕様の一部としてるクラスベースOOPならクラスは
オブジェクトを具象化する雛型でそれから具象化されたのがインスタンスだと言えばややこしいメタな話はしなくて済むと思うんだけど。
まあ、SmalltalkとかIoとかのOOPの話なら別として。
0221デフォルトの名無しさん
2007/09/26(水) 01:39:08「虚数」を考えるときにリンゴの具体例はいらないだろ。あっても訳わかんないだろ。
メタクラスをやる時に鯛焼き機の具体例はいらないよ。
0222デフォルトの名無しさん
2007/09/26(水) 02:20:57>メタクラスをやる時に鯛焼き機の具体例はいらないよ。
それはオブジェクトという概念を理解した上でその下にあるメタクラスやメタメタクラスの概念を勉強するからでは?
SmalltalkのOOPが理解できれば話は早いんだけどね。
最近だとOOPの教本は何故かjavaだしjavaがC構文だからSmalltalkは余計に難しいかね。
#個人的にはjavaはOOPの教本向きじゃなくてツールキットやフレームワーク(ミドルウェア類のアプリケーションの一個下にある層)、
それに絡めてデザインパターンの使い方の教本向きだと思う。
0223デフォルトの名無しさん
2007/09/26(水) 03:53:47キーイベントにフォーカスを移すにはどうしたらいいでしょうか?
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29744
0224デフォルトの名無しさん
2007/09/26(水) 05:48:39Java言語におけるユーザ定義クラスのインスタンス-Java言語におけるユーザ定義クラス
- Java言語におけるクラス - オブジェクト指向におけるクラス
0225デフォルトの名無しさん
2007/09/26(水) 07:35:14まだ、たこ焼きのレシピがクラスのソースコードで、newがたこ焼き機、インスタンスはたこ焼きって言う方が近い
コンストラクタ(レシピ)には具が渡され、微妙に具が異なるたこ焼きもできるってな
0226デフォルトの名無しさん
2007/09/26(水) 08:02:31クラスとインスタンスの関係は、「特定言語において規定された」一つの概念の
インスタンスなんだから、具体に拠って理解したかったら変な例えじゃなくて
いろんなOOPLの言語仕様を見比べたり、良質なソースコードを読んで
クラスがどのように使われているか調べたりするほうが正しいやり方
0227デフォルトの名無しさん
2007/09/26(水) 08:04:10細かく説明すればいいってもんじゃない。物には程度っていうもんがあるだろうよ。
わかりやすくするために比喩を使ってるのに、その比喩が細かすぎてわかりにくいんじゃ本末転倒だ。
0228デフォルトの名無しさん
2007/09/26(水) 09:11:27納得できなければスルーするなり各自修正すればいいだけじゃまいか。
万人向けのたとえなんて存在しないんだから。
ちなみに鋳型のたとえはメイヤー本なんかでも出てくる由緒正しきたとえ。
0229デフォルトの名無しさん
2007/09/26(水) 09:32:55DB(Oracle)も使ってるのですが、
作業の都合でDBに入れられないデータもあるので仕方がありません。
これは、H2使うとメモリ使用量が倍以上になってしまうのでまずいなぁ。
テーブル構造のデータ型でSQLも使えるのがあるといいのに…LINQとか?
0230デフォルトの名無しさん
2007/09/26(水) 10:20:41関数から抜けるとaddされた行がないのはなぜでしょうか?
0231デフォルトの名無しさん
2007/09/26(水) 10:33:14returnする必要も無い。
関数内で、ArrayListをコピーして、それに対してaddしてれば、
当然、元のArrayListにはaddされない。
0232デフォルトの名無しさん
2007/09/26(水) 10:48:52関数内でコピーしたArrayListをreturnすれば、それはaddされています。
ただし、余計な処理が増えてるので処理量がほぼ倍に増えてます。
0233デフォルトの名無しさん
2007/09/26(水) 11:20:16Canvas内のpaint()メソッドにrequestFocus();を入れて
frame.addKeyListener(this);からcanvas.addKeyListener(this);に書き直したらフォーカスを取得することが出来ました。
スレ汚しすいませんでした。
0234デフォルトの名無しさん
2007/09/26(水) 11:43:52起動方法は別スレッドでProcessBuilderを使ってProcessを作成し実行という流れです。
このまま実行すると、当然ながらメインのフレームの方を終了しても各Processは終了しないのですが、それを終了と同期させて全てのProcessを終了させるにはどうしたらいいでしょうか?
0235デフォルトの名無しさん
2007/09/26(水) 11:49:390236デフォルトの名無しさん
2007/09/26(水) 11:55:30そうなるとスレッドを管理するマネージャーみたいなクラスを準備した方がよさそうですね。
ありがとうございました。
0237デフォルトの名無しさん
2007/09/26(水) 12:53:45開発のためにjava5, java6を入れていますが、
どのタイミングで使えなくなったまでは失念です…。
パーソナルFirewallは切った状態でも試しましたがNGでした。
ファイルフォーマットはNTFSのため、jconsoleのFAQ#1は該当しません。
他に確認すべき点はありますでしょうか?
C:\>echo %JAVA_HOME%
C:\Java\jdk1.6.0_01
C:\>echo %CLASSPATH%
%CLASSPATH%
C:\>java -version
java version "1.6.0_01"
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
C:\>c:\Java\jdk1.6.0_01\bin\jps
C:\>
0238デフォルトの名無しさん
2007/09/26(水) 14:56:020239デフォルトの名無しさん
2007/09/26(水) 15:05:34特に指定されていないのなら最新版を使った方がいいよ
0240デフォルトの名無しさん
2007/09/26(水) 15:10:47ありがとうございます
0241デフォルトの名無しさん
2007/09/26(水) 16:18:11pubilc int data;
}
class Bar {
private Foo foo;
Bar(){
foo = new Foo();
}
Foo getFoo(){
return this.foo;
}
}
class Test{
Bar bar;
Foo foo;
Test(){
bar = new Bar();
foo = bar.getFoo();
}
}
この時、Testコンストラクタ内で問題無くFooのインスタンスを受け取れますか?
0242デフォルトの名無しさん
2007/09/26(水) 16:21:460243デフォルトの名無しさん
2007/09/26(水) 16:25:170244デフォルトの名無しさん
2007/09/26(水) 16:42:31そうでないと一冊目としてはちょっと厳しい。
オライリーのサイトにサンプルがあるから眺めてみて、もし意味不明なら
もう少し易しめのを読んでからにしたほうがいいと思う。
0245デフォルトの名無しさん
2007/09/26(水) 16:45:37こっちで詳細に議論してくれ
0246デフォルトの名無しさん
2007/09/26(水) 19:12:30自作のパッケージをjarファイルにまとめてimportしたいのですが
「パッケージが無い」と言われてうまくいきません。
パッケージをjarファイルにするときや
jarファイルをimportするときには
何か特別な記法があるのでしょうか?
0247デフォルトの名無しさん
2007/09/26(水) 19:19:110248デフォルトの名無しさん
2007/09/26(水) 19:21:12予想だが、インポートで指定してるパスが一つ下なんだと思う。
Javaがパッケージをフォルダ構造で実現してるからこんなことが起こるんだが、
ソースファイルに、
pakcage jp.ac.〜;
とかいてあるのに、パス指定でacフォルダを指定したりしてないか?
もしそうなら、きちんとルートパッケージを指定してもう一度やってみるべし。
0249デフォルトの名無しさん
2007/09/26(水) 19:49:35pakcage hoge;
の一式を
jar cvf hoge.jar hoge/*.class
して、testクラスで
import hoge.*;
してます。
jarファイル自体はtestクラスの下に置きました。
階層やらはいろいろいじってみたのですが…。
0250デフォルトの名無しさん
2007/09/26(水) 19:52:320251デフォルトの名無しさん
2007/09/26(水) 19:56:44META-INF/
META-INF/MANIFEST.MF
hoge/A.class
hoge/B.class
こんな感じです。
どこか問題はあるでしょうか。
0252デフォルトの名無しさん
2007/09/26(水) 20:05:42じゃあやっぱりクラスパス指定してないだけでは
0253デフォルトの名無しさん
2007/09/26(水) 20:34:55プライベートフィールドにアクセスできる」という文法規則があります。たとえば
class MyClass {
private String name;
...
public boolean equals(MyClass other) {
return name.equals(other.name);
}
}
が合法的となっています。
これは、データのカプセル化をこわすもので、
望ましくないものだと思うんですが、どうなんでしょうか?
ご教示ください。
0254デフォルトの名無しさん
2007/09/26(水) 20:39:27とか、そういうのを抑える方が先
0255デフォルトの名無しさん
2007/09/26(水) 20:49:07これは合法だな。
自分のクラスの問題だから気をつけて使うべき、て言うのが答えだと思う。
安全性を考慮するならsetter/getterを使ってアクセスするとかそういうのにしたほうがいい。
>>254
kwsk
0256デフォルトの名無しさん
2007/09/26(水) 20:56:45なるほどなるほど。
0257デフォルトの名無しさん
2007/09/26(水) 21:04:57カプセル化というのは、普通自分の作っていないクラス外からの
フィールドへの直接アクセスを抑制する目的で使う。
だから、まあ、気をつけて使えというところか。
この例で、equalsで使ってるフィールドは変更がないからいいものの
渡されたオブジェクトを変更するとかに使うのは危険じゃないかと思う。
なので、finalがついてるフィールドの場合に限定するとかしといたほうがいいかなぁ、と。
>>254
カプセル化とは別の話。>>253の話は、equals以外にも適用される。
0258251
2007/09/26(水) 21:38:12クラスパス指定って、環境変数のことですか?
それって、直下のjarファイルを読むときも必要なのでしょうか。
0259デフォルトの名無しさん
2007/09/26(水) 21:43:25java コマンドの -classpath オプションで jar ファイルを指定する
0260251
2007/09/26(水) 22:09:24解決しました。
ありがとうございます。
でもやっぱりいちいち指定しないと使えないのでしょうか。
実行のときまでパス指定しろと言われてしまったのです…。
0261デフォルトの名無しさん
2007/09/26(水) 22:11:15望ましくないとする言語もあるね。Rubyとか。
言語設計の思想の話だね。
0262デフォルトの名無しさん
2007/09/26(水) 22:12:50実行可能jarファイルにしてしまえばOK。
Class-Pathエントリに書いたjarファイルはクラスパスに追加される。
0263251
2007/09/26(水) 22:25:47解決しました。
ありがとうございました。
0264253
2007/09/26(水) 22:34:000265デフォルトの名無しさん
2007/09/27(木) 00:51:51いまいち違いわかりません。
違いを教えて
0266デフォルトの名無しさん
2007/09/27(木) 00:55:33utilの方はjava.utilかもしれんが、jakarta commonsはsが付くしなあ
0267デフォルトの名無しさん
2007/09/27(木) 00:57:22クラス名・変数名に迷ったら書き込むスレ。Part10
http://pc11.2ch.net/test/read.cgi/tech/1180146315/
0268デフォルトの名無しさん
2007/09/27(木) 02:10:02javaのプログラムの中にfortranやcなど異なる言語を実行させるにはどうしたら
いいでしょうか?
0269デフォルトの名無しさん
2007/09/27(木) 02:46:290270デフォルトの名無しさん
2007/09/27(木) 04:26:540271デフォルトの名無しさん
2007/09/27(木) 04:35:20むかしは、JNIのオーバーヘッド(作成の手間も含めて)に対して
パフォーマンスメリットがあったり、Javaじゃ実現できない機能が使えたりしたから、
JNIもよく使われたけど、Javaの実行環境、ライブラリの性能が上がって
機能も増えてきたから、JNIでないと、というものが減ってるよね。
ホントにどうしても使いたいって別言語のプログラムは、もう別プロセスで動かしちゃう方が楽じゃないかと。
Runtime.exec()。と。
データのやり取りは、ファイルかパイプか、ソケット経由で。
0272デフォルトの名無しさん
2007/09/27(木) 07:39:230273デフォルトの名無しさん
2007/09/27(木) 08:17:52JNIっていうものはよくわかりませんが、なんか大変そうですね。
時間がないのでRuntime.exec()のやり方でやってみることにします。
Javaならほかの言語とも連携できるということを聞いたので今頑張っているんですが
やっぱそう簡単にはいかないんですね。
0274デフォルトの名無しさん
2007/09/27(木) 09:15:56Cみたいに単純に#includeしたいんですが
javaでそういうことはできるのでしょうか?
0275デフォルトの名無しさん
2007/09/27(木) 09:23:060276デフォルトの名無しさん
2007/09/27(木) 09:41:29(会長のメッセージ)
 ̄ ̄ ̄\| ̄ ̄ ̄
http://www.freewebs.com/premiumtv/?BEAT/?rTV=rimo.tv/en/ch/3802
0277デフォルトの名無しさん
2007/09/27(木) 10:41:15それは多分javaで実装された他の言語とのシームレスな通信の話だと思う。
JNI使うメリットか・・・コンソール制御は需要ないだろうし、今はVMが異様に早いからなぁ。
JNI噛ますオーバーヘッドとネイティブコードを書くデメリットの方がでかいよなぁ。
ほとんど使われなくなったSWTの今・昔の状況が物語ってるね。
まあ広く利用価値のあるJNIってJOGL,JOAL,JMFくらいだろうね・・・。
0278デフォルトの名無しさん
2007/09/27(木) 10:41:55メソッド実行→ダイアログ描画→ユーザーの入力待機→入力に応じた返り値
というのは、JDialogでいったいどうやって実現すればよいのでしょうか。
メソッド実行してからメソッド内のどこかで入力待機してる筈なのですが、
ソース見てもいまひとつわかりませんでした。スレッドを新設してるのでしょうか。
0279179
2007/09/27(木) 10:48:53実行してみて英語がファッキンな私でもだいたい何してるかはわかったんですけど・・・
要するに1フレームごとに分けて、フレーム数とかもわかるのはいいんですけど、1フレームごとに分けた画像とかってどっかのフォルダに入っちゃったりしてるんですか?
画像にしてRGB値の変化みてけってことですよね?
0280デフォルトの名無しさん
2007/09/27(木) 11:24:07setModal(true) したあと setVisible(true) を呼ぶと、閉じるまでそこで停止する
0281デフォルトの名無しさん
2007/09/27(木) 11:34:55ということはイベントディスパッチスレッドからsetVisible(true)をすると、
イベントディスパッチスレッドが止まって、ダイアログのボタンが押せなくなったり、
ダイアログを閉じられなくなったり、いろいろえらいことに・・・
ってそんなわけありませんよね・・・。
0282デフォルトの名無しさん
2007/09/27(木) 12:41:340283デフォルトの名無しさん
2007/09/27(木) 13:14:0926さまじゃないが単にフォルダ指定してないだけじゃね?
0284デフォルトの名無しさん
2007/09/27(木) 13:34:23それは大丈夫だと Dialog#setVisible の Javadoc に書いてある
>>282
ダイアログが非表示になるまで戻らないと Dialog#setVisible の Javadoc に書いてある
0285デフォルトの名無しさん
2007/09/27(木) 13:46:51なんか見つけた。これでおk?
http://rsb.info.nih.gov/ij/plugins/jmf.html
0286デフォルトの名無しさん
2007/09/27(木) 14:10:12ありがとうございます。
これですね。
>Dialog#setVisible
>モーダルダイアログに関する注意.
>
>このメソッドがブロックされている間は、 ほかのイベントはブロックされないようにツールキットで保証>されるので、 イベントディスパッチスレッドからこのメソッドを呼び出してもかまいません。
結局仕組みがよくわかりませんが、Dialogが不思議な力で護ってくれる、と。
0287237
2007/09/27(木) 17:00:35jdk1.6.0_02を入れたけど症状は変わらず…
ってかプロセスIDを取れないんだったら取れなかったという
ログを出して欲しいけど、それすら出さんのね…。
-verbose的なオプションがあればまだしも…。
0288デフォルトの名無しさん
2007/09/27(木) 17:14:55最近あがってるスレに変な宣伝urlが書き込まれるようになってる
0289デフォルトの名無しさん
2007/09/27(木) 17:41:47Javaの画面上で「Alt+Space」を押すと左上にポップアップが出て、
サイズ変更や移動ができてしまいますが、このポップアップを表示させない
ようにできないでしょうか?
あるいは、「移動(M)」だけでも無効にできるといいのですが。。。
(「閉じる(Alt+F4)は無効にしています)
0290デフォルトの名無しさん
2007/09/27(木) 18:10:23それはWindowsそのものの機能でJava固有のものではない。
そして、俺はそこまでしか知らない。
0291デフォルトの名無しさん
2007/09/27(木) 18:49:10resizeとmovedを検知して、元に戻す方法なら知っている
029226
2007/09/27(木) 18:49:36290行で int 配列を取ってるだろ?これが 1 フレーム分の画像そのものの情報。
あとは RGB 成分に分解して好きにしろよ。
ちなみに 292 行の判定文は単に俺が 100 フレーム目の画像を取り出そうかな
と思って入れてただけ。別に 100 に重大な意味はない。
290行以降は画像として保存してちゃんと取得できてるかチェックしようかなと思って
追加した処理。別に必要なきゃ削除しろよ。
ってこれで分からないなら何がどう分からんのか詳細にかけやコラ(号泣)。
0293デフォルトの名無しさん
2007/09/27(木) 22:30:09L&FでOSによるウィンドウのデコレートを取ってしまう
たぶんWindowsっぽくなくなるけど
0294デフォルトの名無しさん
2007/09/27(木) 22:31:26JavaVMのソース(Cなり、Javaなりでできているもの)は手に入らないものでしょうか?
Windows用でもLinux用でもなんでも構いません
0295デフォルトの名無しさん
2007/09/27(木) 22:37:42たしかどっかでPureJavaのJVMがソースとともに公開されてた希ガス
0296デフォルトの名無しさん
2007/09/27(木) 22:41:33ぐぐってみれ
0297デフォルトの名無しさん
2007/09/27(木) 22:41:36今、最近オープンソース化されたjdk7.0用?のvmのソースを落としてきたのですが、膨大すぎて…。
0298289
2007/09/27(木) 23:28:34>>290
ということはJavaでは制御できないと。。。orz
>>291
その方法教えていただけないでしょうか?
>>293
UIManager.setLookAndFeel(String className) でセットしている
見た目をWindows以外にする、ということでしょうか?
0299デフォルトの名無しさん
2007/09/27(木) 23:51:180300デフォルトの名無しさん
2007/09/27(木) 23:53:34import java.awt.*;
import java.awt.event.*;
public class HelloWorld extends Frame{
/********** コンストラクタ **************/
public HelloWorld() {
setSize(400,300);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/*************** paint ****************/
public void paint(Graphics g)
{
g.drawString("私の名前はtestです",20,60);
}
/**************** main ************/
public static void main(String[] args)
{
Frame w = new HelloWorld();
w.setVisible(true);
}
}
クラス、インスタンス、オブジェクトの理解が曖昧なので間違っているかもしれませんが
g.drawStringというのは何かのクラスをgという名前でインスタンス化したものだと思うのですが、どこで実行されたものなのでしょうか
xxxx g = new xxxx(); がないとおかしくないのかなと思っています
0301デフォルトの名無しさん
2007/09/28(金) 00:02:43見張り役が画面の再描画が必要であると判断した時に、Graphicsのインスタンスgを作成し、Frame#paint(g)を呼び出す。
こういう説明でおk?
0302デフォルトの名無しさん
2007/09/28(金) 00:21:55なるほど
画面のサイズを変更したときに
画面から欠けてたものを再描写するとき(最初の描写も?)に
自動的に gという名前でインスタンスを作成してくれるということですね
0303デフォルトの名無しさん
2007/09/28(金) 00:22:42g は AWT の中でインスタンス化されて paint に渡される。
ソースは提供されてないので、残念ながら new してるところを見ることは出来ないが、どこかで new されてるのは間違いない。
0304デフォルトの名無しさん
2007/09/28(金) 00:25:53先生から
「repaint()でupdate(Graphics g)メソッドを呼び出し、update(Graphics g)メソッド内でpaint(Graphics g)メソッドを呼び出す」
と聞いたのですが・・・
repaint()とupdate(Graphics g)の間(?)ってどうなっているんですか?
repaint()でrepaint()メソッドを呼び出さないんですか?
0305デフォルトの名無しさん
2007/09/28(金) 00:31:08public void update(Graphics g){
/*
本来ならここで画面全体を背景色で塗りつぶす処理が入るが、
このメソッドをオーバーライドしその処理をあえて飛ばす事が出来る。
*/
paint(g); // 引数で渡されたGraphicsオブジェクトをそのままpaintメソッドに渡す。
}
0306デフォルトの名無しさん
2007/09/28(金) 01:36:20例えば >>300 のプログラムみたいに paint メソッドで背景を消去し忘れてても大丈夫なように、
update はウィンドウの背景を消去してから paint を呼ぶ。
0307デフォルトの名無しさん
2007/09/28(金) 04:23:43JTableを継承して、いくつかの追加機能を設けたExtendedJTableを作りました。
この追加機能を利用するにはTableModel側にも拡張が必要で、
TableModelインターフェイスを拡張したサブインターフェースExtendedTableModelを作りました。
この拡張されたTableModelを実装したテーブルモデル用に
ExtendedJTable#setModel(ExtendedTableModel tablemodel){ super(tablemodel); }
を定義したのですが、JTableを継承したときに、
JTable#setModel(TableModel tablemodel)も継承しているので、
追加機能に対応していないテーブルモデルを設定することもできてしまいます。
この場合追加機能を用いようとしても当然無理なので、どうにかしたいのですが、
どのようにするのがよいのでしょうか。
JTable#setModel(TableModel tablemodel)を潰すことはできませんよね。
設計に何か根本的な間違いがあるのでしょうか。
class ExtendedJTable extends JTable{
public void setModel(ExtendedTableModel tablemodel){ super(tablemodel); }
public void somethingWonderful(){ //JTable追加機能
ExtendedTableModel tablemodel=(ExtendedTableModel) getModel();
//以下追加機能のロジック
tablemodel.addedTableModelMethod();
//etc...
}
}
interface ExtendedTableModel extends TableModel{
public void addedTableModelMethod(); //JTable#extendedWonderfulSomething()で利用されるメソッド
}
0308デフォルトの名無しさん
2007/09/28(金) 04:34:40TableModelであることを前提に動作している部分は問題ないのでは?
TableModelとしてExtendedTableModelで追加された機能を使うわけではないので。(コンパイルできないし)
ExtendedJTableにしろExtendedTableModelにしろスーパークラスの機能を潰しているわけではないんでしょ?
もし、機能の追加でなく機能の削除のための継承なら、それは間違った継承の使い方だと思う。
0309デフォルトの名無しさん
2007/09/28(金) 04:52:01ExtendedTableModelかどうかを見て、ExtendedTableModelでなければ、
TableModelとして扱い、追加機能を使わないようにしないと駄目だと思う。
0310デフォルトの名無しさん
2007/09/28(金) 04:53:23>>TableModelであることを前提に動作している部分は問題ないのでは
その通りです。
しかし追加機能を使おうとすればキャストで例外が生じてしまいます。
既存のクラスをできるだけ流用しつつ
ExtendedJTableでは必ずExtendedTableModelを実装したテーブルモデルを対にして
使うことを強制するような設計はないのでしょうか。
>>309
例には書きませんでしたが一応ClassCastExceptionをキャッチしてます。
0311デフォルトの名無しさん
2007/09/28(金) 04:56:12ExtendedTableModel#setModel(TableModel)を定義して、
渡されたTableModelがExtendedTableModelのインスタンスでなければ例外を出すのじゃだめ?
0312デフォルトの名無しさん
2007/09/28(金) 05:02:43やはりそれしかありませんか。
実行するまでわからないのがネックですね。勉強不足で申し訳ないのですが、
巷で流行りのでざいんぱたあんといふものでうまくいかぬものか、と考えていたのですが。
0313デフォルトの名無しさん
2007/09/28(金) 05:20:000314デフォルトの名無しさん
2007/09/28(金) 05:34:44例外のキャッチすら要らないのかもしれませんが、
後学のためにと、ちょっと興味を持ったもので。
こんな時間に付き合っていただき、ありがとうございました。
0315デフォルトの名無しさん
2007/09/28(金) 06:44:17音飛びというか安定して演奏されないことがあります。
安定して演奏されるようにするにはどうすればいいでしょうか。
0316デフォルトの名無しさん
2007/09/28(金) 06:57:34徹夜頭でうつらうつらと考えたんけど、
ExtendedJTableでしか使われない機能を定義しているExtendedTableModelをTableModelから継承しているのが問題で、
public interface ExtendedTableModel {
void addedTableModelMethod();
}
にして、
public class ExtendedJTable extends JTable {
//ExtendedTableModelのデフォルト実装
private ExtendedTableModel extendedModel = new DefaultExtendedTableModel();
public void setModel(ExtendedTableModel model){
extendedModel = model;
}
public void somethingWonderful(){
TableModel model = getModel();
extendedModel.addedTableModelMethod();//拡張機能を使用するとき
model.getRowCount();//TableModelの機能を使用するとき
}
}
のようにすればいいんでは?
ExtendedJTableのコンストラクタにTableModelとExtendedTableModelの両方を指定するものを定義するとか、
setModel(TableModel, ExtendedTableModel)みたいなメソッドを定義するとか、
便利にするための追加はいろいろとやることにして。
で、面倒ならTableModelとExtendedTableModelを継承するインタフェースを作って、
それを実装したクラスを両方のモデルとして与えてやると楽とか。
setModel(TableModelAndExtendedTableModel model) { super.setModel(model); extendedModel = model; }
こんな感じのメソッドを作って。
0317デフォルトの名無しさん
2007/09/28(金) 07:00:29どうやってMIDI再生しているかによるけれどJavaSound APIを使っているなら
バッファリングのパラメータを調整してみるのはどうだい?
0318デフォルトの名無しさん
2007/09/28(金) 07:05:43midiの再生だからバッファの問題よりもマシンリソースが足りないんじゃないかな?
実行環境のスペックとか再生方法が分からないと何とも言えないけど。
0319315
2007/09/28(金) 07:23:40Sequencerを使っています。
Celeron(2.2G)よりもCore2(T7200)の方が
音飛びが発生する時間は遅いのですがそれでも発生します。
0320デフォルトの名無しさん
2007/09/28(金) 07:37:39----【即系サイト×優良サイト=即会い即やり!】-----------------------
優良出会い系サイトと即出会えるサイトを併用して使い、即会いライフを楽しんでいます。
これが面白いほど会える☆ 会った後は・・・
俺の場合、出会い系サイト3つで女の子と週2〜3で出会えてます。
これ以外にもお気にの女の子とは週1で会ってます。
今回は皆さんにも出会いを楽しんでもらいたいので、俺が使っている
登録後一日以内に出会えたサイトを紹介するブログ始めました。
皆も休日にエンジョイしてください!
↓↓↓
【即出会えるサイト紹介ブログ】
http://deaigets.blog97.fc2.com/
--------------------------------------------------------------------
0321デフォルトの名無しさん
2007/09/28(金) 08:18:16>徹夜頭でうつらうつらと
すみません。ありがとうございますm(><)m
基本的なテーブルモデルと、拡張された部分とに分ける案ですが、
そうすると拡張部分のメソッドからテーブルモデルのフィールドを
読んだり書き換えたりするのがするのがだいぶ大変になりそうですし、
ExtendedTableModelが単独だと意味をなさなくなりますし、
どうやって分離するのかちょっとわかりません。
class MyTableModel implements TableModel{]
class DefaultExtendedTableModel extends MyTableModel implements ExtendedTableModel{}
のようにするのでしょうか。
そもそもJTableを継承してsetModel(TableModel)が生きてる時点で、
「ExtendedJTableでは必ずExtendedTableModelを実装したテーブルモデルを
対にして使うことを強制するような設計」という要件が難ありですね。
やはり無理なことを考えているのでしょうか。
0322デフォルトの名無しさん
2007/09/28(金) 09:52:23定時毎に指定したID,PASSでログインして
HPから情報をもってきたいと思っております
0323デフォルトの名無しさん
2007/09/28(金) 10:14:39HttpURLConnection
0324デフォルトの名無しさん
2007/09/28(金) 10:25:37ありがとう!
0325デフォルトの名無しさん
2007/09/28(金) 11:23:49普通のTableModelがセットされたときは、普通のTableModelにExtendedな機能を外付けするラッパークラスをかぶせるっていうのはどうかな。
class ExtendedTableModelWrapper implements ExtendedTableModel {
private TableModel originalModel;
public ExtendedTableModelWrapper(TableModel originalModel) { this.originalModel=originalModel; }
// 既存のメソッドはオリジナルモデルに転送
public int getRowCount(){return originalModel.getRowCount();}
public int getColumnCount(){return originalModel.getColumnCount();}
......
// 追加の機能を実装
public void getDimensionCount(){return 1;}
......
}
class ExtendedJTable extends JTable {
public void setModel(TableModel model) {
if (!(model instanceof ExtendedTableModel)) {
model = new ExtendedTableModelWrapper(model);
}
super.setModel(modle);
}
......
}
0327デフォルトの名無しさん
2007/09/28(金) 13:00:56オブジェクト、クラス、インスタンスのことがわかってきたぁぁ!
お前らマジでありがとう
0328デフォルトの名無しさん
2007/09/28(金) 13:36:37400あたりでOutOfMemoryErrorが発生して、それ以降テストが実行されなくなるんだけど、
何か良い回避策ありませんか?
0329デフォルトの名無しさん
2007/09/28(金) 13:43:290330デフォルトの名無しさん
2007/09/28(金) 13:50:03Antでやれば?
それだけの件数になると、EclipseのJUnitビューよりも
Antのjunitreportタスクの出力の方が見やすい。
0331デフォルトの名無しさん
2007/09/28(金) 14:22:33まだ眠いやw
ExtendedTableModelがTableModelを継承するのが元凶なので、それを回避する方針は変えないとして、
ExtendedTableModel内でTableModelの機能を使いたいのならExtendedTableModelがTableModelを持てばいいと思う。
public interface ExtendedTableModel {
void setModel(TableModel model);
void addedTableModelMethod();
}
にして、ExtendedJTableは>>316のままで、ExtendedTableModelの実装は例えば、
class DefaultExtendedTableModel implements ExtendedTableModel {
TableModel model = new DefaultTableModel();
public void setModel(TableModel model) {
this.model = model;
}
public void addedTableModelMethod() {
model.getRowCount();//TableModelの機能を使用するとき
}
}
コンストラクタでTableModelを指定することを強制するExtendedTableModelの実装もありだろうし。
ExtendedTableModelを抽象クラスにして、TableModelを持たせる部分あたりはExtendedTableModelで実装してしまう手も。
0332デフォルトの名無しさん
2007/09/28(金) 14:38:11public void setModel(TableModel model) { extendedModel.setModel(model); }
みたいにオーバーライドして、
public void somethingWonderful(){
TableModel model = extendedModel.getModel();
extendedModel.addedTableModelMethod();//拡張機能を使用するとき
model.getRowCount();//TableModelの機能を使用するとき
}
のようにしないといけなかった。ExtendedTableModelにもgetModel()を追加。
public interface ExtendedTableModel {
void setModel(TableModel model);
TableModel getModel();
void addedTableModelMethod();
}
0333デフォルトの名無しさん
2007/09/28(金) 14:53:45extendedModelが持っているTableModelを使わないねorz
public void setModel(TableModel model) { extendedModel.setModel(model); }
は、
public void setModel(TableModel model) { super.setModel(model); extendedModel.setModel(model); }
にしてsomethingWonderful()のTableModel model = extendedModel.getModel();は
このままでもmodel = getModel()にしてもいいという感じでいけるのかな。
JTableのTableModelとExtendedTableModelのTableModelが一致するようになっていればいいわけで。
0334デフォルトの名無しさん
2007/09/28(金) 15:27:15テストプログラムを作ったらコンパイルは通るけど実行時エラーが起きるよ
ExtendedJTableをnewする時にJTableのコンストラクタがsetModel(TableModel)を呼ぶもんだから
extendedModelが初期化されないうちにextendedModelを使おうとしてる
private ExtendedTableModel extendedModel = new DefaultExtendedTableModel();
public ExtendedJTable() {
setModel(extendedModel);
}
public void setModel(TableModel model) {
super.setModel(model);
if (extendedModel != null) extendedModel.setModel(model);
}
public void setModel(ExtendedTableModel model){
super.setModel(model.getModel());
extendedModel = model;
}
0335デフォルトの名無しさん
2007/09/28(金) 15:42:39↓このようなもの。
http://xqzone.marklogic.com/images/smiley_big.gif
0336デフォルトの名無しさん
2007/09/28(金) 15:46:150337デフォルトの名無しさん
2007/09/28(金) 15:50:09スマイルマークを作るって具体的にどういう意味だ。
Windowsのペイントみたいなお絵描きソフトを作りたいってこと?
0338デフォルトの名無しさん
2007/09/28(金) 15:59:24Javaで四角や三角を作れるようにスマイルマークは作れますか?
0339デフォルトの名無しさん
2007/09/28(金) 16:04:17四角や三角を作るって具体的にどういう意味だ。
0340デフォルトの名無しさん
2007/09/28(金) 16:05:400341デフォルトの名無しさん
2007/09/28(金) 16:08:09javaにはJava2Dというものがあってだね・・・
スマイルマークってドローベースの方が適切だよな。
0342デフォルトの名無しさん
2007/09/28(金) 16:27:52Path2D.Double クラスにベジェ曲線を設定していって、fill で塗りつぶせば描けるとは思うが。
0343デフォルトの名無しさん
2007/09/28(金) 17:27:29http://www.thinkit.co.jp/cert/tech/3/11/3.htm
ここを参考にantしてみたけど、全部ClassNotFoundExceptionになる。
antからテストターゲットクラスが参照できていないみたい
ターゲットのパスも間違ってないと思うんだけど..
0344デフォルトの名無しさん
2007/09/28(金) 20:26:05環境は ubuntu feisty で、以下のような手順でやった。
$sudo apt-get install ant
$ant -version
Apache Ant version 1.6.5 compiled on July 5 2006
$sudo apt-get install junit
$ls /usr/share/java/junit-3.8.1.1.jar
/usr/share/java/junit-3.8.1.1.jar
$ls /usr/share/ant/lib
ant-bootstrap.jar ant-launcher.jar ant.jar junit.jar
$echo 'export ANT_HOME=/usr/share/ant' >> ~/.bash_profile
$source ~/.bash_profile
$which ant
/usr/bin/ant
$ant
BUILD FAILED
/home/xxxx/build.xml:68: Could not create task or type of type: junit.
なんででしょ?
0345デフォルトの名無しさん
2007/09/28(金) 20:29:280346デフォルトの名無しさん
2007/09/28(金) 20:34:04Ant could not find the task or a class this task relies upon.
This is common and has a number of causes; the usual
solutions are to read the manual pages then download and
install needed JAR files, or fix the build file:
- You have misspelt 'junit'.
Fix: check your spelling.
- The task needs an external JAR file to execute
and this is not found at the right place in the classpath.
Fix: check the documentation for dependencies.
Fix: declare the task.
- The task is an Ant optional task and the JAR file and/or libraries
implementing the functionality were not found at the time you
yourself built your installation of Ant from the Ant sources.
Fix: Look in the ANT_HOME/lib for the 'ant-' JAR corresponding to the
task and make sure it contains more than merely a META-INF/MANIFEST.MF.
If all it contains is the manifest, then rebuild Ant with the needed
libraries present in ${ant.home}/lib/optional/ , or alternatively,
download a pre-built release version from apache.org
- The build file was written for a later version of Ant
Fix: upgrade to at least the latest release version of Ant
- The task is not an Ant core or optional task
and needs to be declared using <taskdef>.
- You are attempting to use a task defined using
<presetdef> or <macrodef> but have spelt wrong or not
defined it at the point of use
Remember that for JAR files to be visible to Ant tasks implemented
in ANT_HOME/lib, the files must be in the same directory or on the
classpath
0347デフォルトの名無しさん
2007/09/28(金) 20:39:40質問する前に読んだか?
0348デフォルトの名無しさん
2007/09/28(金) 20:40:39read the manual pages
0349デフォルトの名無しさん
2007/09/28(金) 21:02:26今読んだ。何が間違っているのかさっぱり分からん。
0350デフォルトの名無しさん
2007/09/28(金) 21:07:39- The task needs an external JAR file to execute
and this is not found at the right place in the classpath.
0351デフォルトの名無しさん
2007/09/28(金) 21:07:590352デフォルトの名無しさん
2007/09/28(金) 21:15:34が、
>>347-348,
>>350
きみら分かりもしないことにわざわざ答えなくていいよ。
マニュアル読めとか、何のためにこのスレあるの。
スレタイにマニュアル読んでも分からない質問専用って書いとけ。
0353デフォルトの名無しさん
2007/09/28(金) 21:22:37VM蹴るときに引数あげるだけ。
0354デフォルトの名無しさん
2007/09/28(金) 21:27:13なんで偉そうなの?
0355デフォルトの名無しさん
2007/09/28(金) 21:29:04The task needs an external JAR file to execute
and this is not found at the right place in the classpath.
0356デフォルトの名無しさん
2007/09/28(金) 21:33:36>>344
>>354
マニュアル読めとだけほざく奴や、質問すら読まず適当に返事する奴に何故敬意を払わないといけないのか。
0357デフォルトの名無しさん
2007/09/28(金) 21:36:49少なくとも質問してるくせに態度が横柄なお前のためにあるわけではないな。
0358デフォルトの名無しさん
2007/09/28(金) 21:37:46あー、あ、君、もう帰っていいよ。ごくろうさん。
0359デフォルトの名無しさん
2007/09/28(金) 21:38:20はいはいわろすわろす
0360デフォルトの名無しさん
2007/09/28(金) 21:38:38スレを占有しすぎですw
質問する前に、ググったり、質問の要点をまとめてこない人は
来ない方が、スレのためにもいいと思います。
正直、エラーを読んで「どこが分からない」とか書かない段階で読まないよ俺は。
すんげー親切なエラーじゃないかwww
0361デフォルトの名無しさん
2007/09/28(金) 21:45:52マニュアル嫁と、エラーメッセージに書いてあるんだよw
0362デフォルトの名無しさん
2007/09/28(金) 21:55:35マニュアルすら読まずに質問する奴を何故人間として扱わないといけないのか。
0363デフォルトの名無しさん
2007/09/28(金) 21:59:08スレの住人はてめーの同僚でも先輩でも先生でもお友達でもないって覚えとけ
0364デフォルトの名無しさん
2007/09/28(金) 22:01:15エラーメッセージを繰り返すだけしかできないんだろ?質問の意味も分からず、
エラーメッセージ繰り返してるんだろ?
ubuntu では ant で拡張タスクを利用するのに apt-optional をインストールしないと
いけないということは知らなかったんだろ?
マニュアル読まずに質問した俺もまずかったが、質問に答えられない連中が偉そうに
マニュアル読めだの言う空気はどうかと思うよ。
0365デフォルトの名無しさん
2007/09/28(金) 22:04:02マジでくんな。
自分を棚に上げすぎ。
0366デフォルトの名無しさん
2007/09/28(金) 22:06:10知ってる知らないにしても普通はマニュアル見るなりして調べるだろ
質問に答えられないとか笑わせるなカス
0367デフォルトの名無しさん
2007/09/28(金) 22:15:06お前さんの書き込みを発端として、出来上がった空気である事がわからないほど子供なの?
感情より実益を優先させようよ。
すまんかった、他にもいい感じの情報があったら教えてくれないだろうか?ってふうに言ってみたら、棚ぼた的にもっと良い事を教えてもらえるかもしれないじゃん?
0368デフォルトの名無しさん
2007/09/28(金) 22:33:360369デフォルトの名無しさん
2007/09/28(金) 22:54:36親切すぎてコンソールからスクロールアウトしちゃうw
0370デフォルトの名無しさん
2007/09/28(金) 22:55:44上級者なら通ってきた道、凡その見当がつくだろ?優越感に浸りたいだけなバカ共。
アドバイスも出来なら中傷すんな。
0371デフォルトの名無しさん
2007/09/28(金) 22:59:120372デフォルトの名無しさん
2007/09/28(金) 23:06:190373デフォルトの名無しさん
2007/09/28(金) 23:23:010374デフォルトの名無しさん
2007/09/28(金) 23:34:230375デフォルトの名無しさん
2007/09/28(金) 23:59:30アプレットでJTextAreaを使った場合にTabキーがインデントにならず、
アドレスバーにフォーカスが移ってしまうのはどの様に回避すれば宜しいでしょうか?
過去ログでは逆の質問はよく見たのですが・・・
0376デフォルトの名無しさん
2007/09/29(土) 00:05:53ブラウザ上の話であれば、アプレットの問題じゃないから制御しようがないかも。
0377デフォルトの名無しさん
2007/09/29(土) 00:12:240378デフォルトの名無しさん
2007/09/29(土) 05:42:54出払っていたので亀レスになってしまいましたが、
丁寧に回答頂きありがとうございます。
いま帰宅したところで脳みそぐったりなので、
後ほどゆっくり読ませていただきます。
0379デフォルトの名無しさん
2007/09/29(土) 07:19:040380デフォルトの名無しさん
2007/09/29(土) 07:25:570381デフォルトの名無しさん
2007/09/29(土) 07:32:08そして、どんなエラーのときも同じメッセージが出るので全く親切じゃない
0382デフォルトの名無しさん
2007/09/29(土) 10:52:58無能無知はお互い様だろうが
0383デフォルトの名無しさん
2007/09/29(土) 12:08:42毎度同じ事言わせんなっていう開発者からのメッセージだな。
で、言いたい事は「マニュアル嫁」と。
0384デフォルトの名無しさん
2007/09/29(土) 12:24:51↓
>>344
↓
>>345
↓
>>346
↓
とりあえず、エラーの内容を住人が読んで、どこまで突き止めたか調べるために、
マニュアル嫁と言う。
↓
>>349 今読んだ
↓
自己解決した。無知の癖にくだらんレスすんなボケ。
↓
住人「は?」
どう考えても、質問者の態度が悪いだろ。
0385デフォルトの名無しさん
2007/09/29(土) 12:25:030386デフォルトの名無しさん
2007/09/29(土) 12:30:25何か困難なことがあれば、一緒に助けてやるというスタンスのところに、
ああいう自己中が来ても意味無いよな。
0387デフォルトの名無しさん
2007/09/29(土) 13:36:13同意。なにサポートと勘違いしてるんだよって話だ。
アドバイザーはボランティアであって、知ってても答えてやる義務はない。
謙虚な初心者がいるなら、少しヒントでも出してやろうっていうぐらいなのに、
勘違いしたヤツが、教えてもらって当然とか思ってたら煽られても当たり前。
赤の他人にものを教えてもらってるって事を忘れるな。通りすがりの人に道を聞くのにもそんな態度がでかいのか?
0388デフォルトの名無しさん
2007/09/29(土) 13:42:52> 初心者や質問者をこけにし過ぎ。
> 上級者なら通ってきた道、凡その見当がつくだろ?優越感に浸りたいだけなバカ共。
> アドバイスも出来なら中傷すんな。
マニュアルやエラーメッセージ読めって立派なアドバイス。
アホでも書けるって言うけど、それすらしていない大アホが言うな。
0389デフォルトの名無しさん
2007/09/29(土) 13:50:03初心者本とか入門サイトが氾濫してるせいかな?
0390デフォルトの名無しさん
2007/09/29(土) 14:08:290391デフォルトの名無しさん
2007/09/29(土) 14:17:12質問の仕方が下手糞で、相手から情報を引き出せない人をよく見かけるわ
愚直に質問力関連の本を読んで勉強するのもいいけど、
人の動かし方とか、自分が何を解決したいのかを伝えるプレゼン力ってのも必要になるから、
実践力を身につけたいなら、そういったスキルも勉強したほうがいい
0392デフォルトの名無しさん
2007/09/29(土) 14:17:172chBook( ttp://deztec.jp/x/04/06/2ch/program/index.html )
に出ているものからほとんど変わってませんか?
古いものが多いので、最近のものでいいものがあればと思うのですが
参考になりそうなものがあれば、教えていただけませんでしょうか
ちなみに他の言語にも触れたことはありません
0393デフォルトの名無しさん
2007/09/29(土) 14:27:06上の方にそっくりの質問があったんだが、ここいって聞いてこい。
***Javaのオススメ入門書*** 『創るJava』 3.0
http://pc11.2ch.net/test/read.cgi/tech/1190032149/
0394デフォルトの名無しさん
2007/09/29(土) 14:29:57HeadFirstJavaがお勧め
わかりやすいし、それなりに実践的
じっくりやりたいなら、独習Java
章末に演習問題があって、それを解くことで力を養っていくスタイル
やさしいJavaは1日で読めてしまう、内容の無い本
ネットでJavaの入門ページ探せば事足りる程度
0395デフォルトの名無しさん
2007/09/29(土) 14:39:32最初に検索にかかったので行ってきたのですが
2ch初心者の私には正しい情報の取捨が出来ないと思われる雰囲気だったのでこちらにきました
>>394
ありがとうございます
まずはその順番で進めていこうと思います
0396デフォルトの名無しさん
2007/09/29(土) 14:42:02順番?
どれか1つでいいんだよ
迷ったら、とりあえずHeadFirstJavaでいい
あれが一番バランスのある入門書だろう
0397デフォルトの名無しさん
2007/09/29(土) 15:20:54>実践力を身につけたいなら、そういったスキルも勉強したほうがいい
実践力を身に付けたいって自分で思う奴なら大丈夫だと思う・・・
厄介なのは自分の事を棚に上げて「お前の力が足りない」と切れる奴なので・・・
0398デフォルトの名無しさん
2007/09/29(土) 15:39:320399デフォルトの名無しさん
2007/09/29(土) 16:19:45そういう人は、行動心理から勉強しないとだな・・・
防衛本能からくる無意識の思考って意識されないから、客観的に自分の言動を見る癖を付けておかないと気付かない
自分から質問して、相手にぞんざいな扱われ方をされたからって、相手を侮辱するのは、基本的には防衛本能による行動
見下されたという危機意識で攻撃的な行為に出てしまう
まぁ本能に忠実なサルでしたってことで
0400デフォルトの名無しさん
2007/09/29(土) 17:08:15↑この場合、変数の宣言を外でしても内側でしても変わらないような気がするんですけど、どうでしょうか?
(最適化される、されない以前の話で)
あと、回答にある、最近のコンパイラは文字列の連結をStringBuilderに最適化してくれるって話は本当ですか?
0401デフォルトの名無しさん
2007/09/29(土) 17:16:50変数の為の領域確保が、「もし」ループの回数行われるなら無駄ですよね?
でも、この場合はスタックに確保される変数なので確保は行われないはずですね。
コンパイル時点で、スタックの何処に入るか決まっています。
最適化云々ではなくローカル変数に利用するバイトコードの構造でそうなるだけです。
つまりString str1というのはバイトコードにならないということです。
StringBuilderに最適化するのは本当です。
以前は、StringBufferに展開していました。
ようは、分かりやすくコードを書けということです。
0402デフォルトの名無しさん
2007/09/29(土) 17:32:12JTableで行のダブルクリックを検出できるようにしたいのですがMouseListenerを取り付けてしまうとイベントを横取りしてしまうのか、行の複数選択ができなくなってしまいます。
よかったら打開策をご教授ください。
0403デフォルトの名無しさん
2007/09/29(土) 17:37:14私のほうは参考程度に・・
>>400
最適化されるされない以前の話でいえば、変数のスコープが変わる
ってそのページに言及されてる
一時的な変数は必要になる直前で宣言したほうがいい
だから、
String str1;
str1 = "foo" + i;
System.out.println(str1);
という実装はよくなくて、
String str1 = "foo" + i;
System.out.println(str1);
と、したほうがいい。
String str;の時点のデフォルトコンストラクタの呼び出しが省ける。まさに使う直前の宣言。
さらに言及すれば、
System.out.println("foo" + i);
がいい。strのスコープがwhile一回分から、printlnの引数内に収まるから。
これぐらいならコンパイラが最適化してくれるから関係ないって意見はあるかもしれないけど、
ポリシーは一貫しておいたほうが全体的なコードは綺麗になるし、コンパイラも万能じゃないから、最適化されないケースがあるかもしれない。
そんなことにいちいち左右されたくないでしょ。
もちろん、デバッグ効率を考えて、String strを生成するってのも一つの手。
何を優先させるかってのはポリシーの問題。
文字列の結合がStringBuilderに最適化されるのは本当
嘘だと思うなら、.classファイルを逆コンパイルしてごらん
ただし、文字列リテラルはその限りではないよ。
0404デフォルトの名無しさん
2007/09/29(土) 18:23:04いくらなんでもString str;でStringのデフォルトコンストラクタが呼ばれるなんて書くのは。
0405デフォルトの名無しさん
2007/09/29(土) 18:37:40あぁ、ごめん
C++と混同した
どちらにせよ、初期化のない変数宣言は推奨されていない
0406デフォルトの名無しさん
2007/09/29(土) 18:52:20言い換えると。
初期化する必要が出てくるまで宣言は遅らせるべき、と。
Effective Javaに出てたね。
0407デフォルトの名無しさん
2007/09/29(土) 19:14:09どっちかといえばプログラマーが楽なようにスコープを小さくするってほうが大きい。
これはあんまり賛同されないだろうけど、俺はなるだけ”{}”を使って、変数のスコープを小さくしてる。
0408デフォルトの名無しさん
2007/09/29(土) 21:33:18便乗で申し訳ないんだけど、
>"{}"を使って、変数のスコープを小さくしてる。
これってどういう意味?
if (hoge) {
int foo = 0;
bar(foo);
}
みたいな話?
0409デフォルトの名無しさん
2007/09/29(土) 21:39:35>>407ではないが、
{
String line;
while( (line=reader.readLine())!=null ){
hogehoge(line);
}
}
という事だと思う。
0410407
2007/09/29(土) 21:58:10>>409であってる。
これをするとインデントが深くなって、エディタによれば見にくくなるんだけど、
一つのスコープで同じ変数名を使いたいときなんかに、スコープを区切れば安全に使える。
ここまで書いてなんだけど、これ、主にCで有効な方法なんだよね。
0411デフォルトの名無しさん
2007/09/29(土) 22:00:20自分の欲しい機能を持ったクラスを探すとき、
ググる以外ではどのように探していますか?
API仕様から直接探すと、クラス名だけでは判別が付きにくいのですが・・。
0412デフォルトの名無しさん
2007/09/29(土) 22:04:47例えばどんな機能が欲しい?いってみれば具体的な手順を教えられるかも。
ググる意外って書いてるけど、ほとんどのクラスは"Java 機能の名前"で出ると思う。
API仕様は確認のためだけだと思った方がいいよ
0413デフォルトの名無しさん
2007/09/29(土) 22:07:12自分は、
while(true) {
String line = reader.readLine();
if(line == null) break;
// 処理
}
と書く。
外に宣言ある書き方、どうしても馴染めない
0414デフォルトの名無しさん
2007/09/29(土) 22:11:30こんなのできたんだね。初めて知ったよ。
0415デフォルトの名無しさん
2007/09/29(土) 22:12:19APIはある程度使い込んである程度の把握が必要。
それが出来てくると、こんな感じで行う。
1. 行いたい機能の大雑把な分類からパッケージのアタリをつける
例えば、ファイル関係ならばjava.util.ioやjava.util.nioなど
2. 行いたい機能ではずせないキーワードを選び、パッケージ内から検索
例えば、File Read など
3. メソッドのサマリーを検索してみる
ここで、ないかな?と思ったならば、「似た機能」を探してみる。
似た機能のクラスを見つけたならば、そのサブクラスやスーパークラスにないかを探す。
基本APIから調べる場合はこんな感じだな。
とにかく、名前(英語名)。
正しく設計されたクラスは、適切な名前のパッケージに適切な名前で入っているわけで、英語に上手く変換できるかが肝。
0416デフォルトの名無しさん
2007/09/29(土) 22:27:59for使えばお望みどおりになるよ。
for(String line = null; (line = reader.readLine()) != null;){
// 処理
}
やらないけどね。
0417デフォルトの名無しさん
2007/09/29(土) 22:35:42そゆ時はメソッド作っちゃう
0418デフォルトの名無しさん
2007/09/29(土) 22:36:21>ファイル関係ならばjava.util.ioやjava.util.nio
java.ioとjava.nioな
0419デフォルトの名無しさん
2007/09/29(土) 22:39:16String line が使いまわされているから微妙に違うだろ
0420デフォルトの名無しさん
2007/09/29(土) 23:15:31宣言時にするのと、
静的イニシャライザするのと、
違いはありますか?
0421デフォルトの名無しさん
2007/09/29(土) 23:17:01意図した使い方は同じだから問題なくね?
本当は
while(String line = reader.readLine()) {
ほにゃらら
}
で書ければいいんだけど、どうしてだめなんだろうね。便利なのに。
0422デフォルトの名無しさん
2007/09/29(土) 23:18:10文法的には等価。
ifとか使うとパフォーマンスで差があるかも。
0423デフォルトの名無しさん
2007/09/29(土) 23:38:13ある。 例えば
static final int FOO = 1;
static final int BAR;
statuc {
BAR = 2;
}
とした場合、
switch(x){
case FOO: // OK
case BAR: // エラー
}
0424デフォルトの名無しさん
2007/09/29(土) 23:42:59一部では、protectedなメンバやメソッドのスコープは、
そのクラス及び派生クラスからのみ。
と解説されています(下記など)が、
www.atmarkit.co.jp/fjava/rensai2/javaent09/javaent09.html
www.tohoho-web.com/java/modifier.htm
他の資料や、実際にコンパイラに通して試してみたのでは、
同一パッケージ無いからならば制限無く参照できるようなのです。
protectedをどういうときに使うのかいまいち解らないのですが、
どういった設計で使うのでしょうか。
0426デフォルトの名無しさん
2007/09/29(土) 23:47:42えらくマニアックな例だなw
0427デフォルトの名無しさん
2007/09/29(土) 23:49:01理由というか純粋なリテラルか、不変な変数に代入処理をしているかという違いかと。
swichでのcaseにはリテラルしかダメ
0428デフォルトの名無しさん
2007/09/29(土) 23:51:41例えば JComponent クラスの paintComponent メソッドは protected だが、これは派生クラスでオーバーライドできないと困るから、選択肢は protected か public のどちらかしかない。
なるべく外からは呼ばれたくないので、見える範囲を最小限にするなら protected ということになる。
0430デフォルトの名無しさん
2007/09/29(土) 23:52:58正しい記述が行われている専門書を1冊買っておくべき。
常に参照するのではなく、この手の疑問はやはり言語定義とかそれに準じた正確な書籍を頼り、Webを信用しちゃいけない。
で、質問の内容だが、protectedは同一パッケージ内のアクセスも許可する
public -> protected -> (default = package private) -> private
という4段階のアクセス制御ができるが、protecedは package private にサブクラスもOKとしたもの
0431デフォルトの名無しさん
2007/09/30(日) 00:00:40どうだろ?
自分もそんなマニアックな方法でコンパイルエラーになる例は知らんかったよ。
ただ、リテラルとfinalの違いを知っていたんで、理解はできただけ。
ぱっと思いついた例。
public @interface Hoge {
int value();
}
-----------
private static final int NUM;
static {
NUM = 10;
}
@Hoge (value=NUM)
public HogeHo() {
}
0432デフォルトの名無しさん
2007/09/30(日) 00:00:57ふと思ったんだけどさ、サブクラスでprotectedなメソッドをオーバーライドして修飾子をpublicにしちゃったら
結局外から呼ばれちゃうんじゃないの?
0433デフォルトの名無しさん
2007/09/30(日) 00:02:30継承すっときに、アクセス就職誌は緩くできないぞっ
キツクする分には問題ないが
0434デフォルトの名無しさん
2007/09/30(日) 00:03:360435デフォルトの名無しさん
2007/09/30(日) 00:06:24そりゃぁそうだけど、それは自分で new するクラスを選べる場合だけに可能な話であって、すでに存在してる任意のインスタンスに対して出来ることじゃない。
0436デフォルトの名無しさん
2007/09/30(日) 00:07:23逆に言えば、可視性に大小関係が必要。
一方、継承はカプセル化を壊すので、
パッケージ単位でカプセル化するパッケージプライベートが
可視性が狭いのは妥当
0437デフォルトの名無しさん
2007/09/30(日) 00:09:41そっちの方がマニアックな例だと思うぞ
>>429
もとの疑問ってなに?
違いがあるかないかってことなら、「ある」でファイナルアンサー
0438デフォルトの名無しさん
2007/09/30(日) 00:10:23だから、コンパイルエラーになるってのw
0439431
2007/09/30(日) 00:16:42他に思いつかなかったぽ
しかし、よく知っていたなswichの例なんて
最初の疑問は単純に
static final NUM = 10;
と
static final NUM;
sattic {
NUM = 10; // あるいは何らかの計算値
}
で、代入する位置が違う事が、なんらかの影響を及ぼすか?って話かと。
結論としては、NUMが不変な変数としては一緒だが、その値がリテラルかどうかという値があるという話だと思われ。
0440デフォルトの名無しさん
2007/09/30(日) 04:21:19ブランクfinalが初期化されなくてswichの評価時にコンパイルエラーになるだけじゃないの?
staticイニシャライザはJNIとその関連フィールドを初期化するためにあるようなものだから、
"ただのブランクfinal"をstaticイニシャライザで初期化しようって発想が間違ってるよ。
あと上であったC風に{}でスコープ隠すってのは、javaの思想としては間違ってるね。
文法として無名クラスのインスタンス化やstaticイニシャライザ文があるから副作用的にそういうことが出来るだけで。
スコープを最小化したい場合はes4みたいにletスコープがあればいいけど
スコープレベルがブロック単位なjavaには可読性を落とすだけだね。
0441デフォルトの名無しさん
2007/09/30(日) 07:29:23んですが、実際にはどのように使い分けるべきなんでしょうか?
0442デフォルトの名無しさん
2007/09/30(日) 09:32:59それ根本的にassertを理解していないぞ
assertは -ea で有効にしなきゃチェックされない
よく使うのは
public method の引数チェック → if + 実行時例外
これはどんな時にでもチェックすべき項目
逆にクラス内でしか状態が変わらない変数pがあったとして、実装上は0とはならない。
そんなときには、
assert p != 0;
int result = hoge / p;
とassert を使用してゼロ除算を念のためチェック
0443デフォルトの名無しさん
2007/09/30(日) 09:36:33似たようなもんだと思うよ。俺は最初assert使ってたんだが、今は非チェック例外使ってる。
細かく違いを挙げると、
assert利点
VM引数で有効/無効を制御できる
大抵一行なので見やすい
(せいぜい等価評価だが)無効にすることで余計な計算を省ける
assert欠点
C系からの移住者は、-eaを知らずになぜ効かないのか悩む(俺)
コードのみを移植しても、有効にはならない
エラーの内容が、例外クラスからはわからない(必ずAssertionError)
非チェック例外利点
必ず実行される
コードをコピーしても挙動は同じ
投げる例外で、ある程度原因がわかる(IllegalArgumentExceptionとか名前でわかる)
非チェック例外欠点
必ずコードが複数行になるので、場合によっては見にくい
有効、無効を制御できない
あとはここが参考になるか。
アサーションを使用したプログラミング
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/lang/assert.html
0444443
2007/09/30(日) 09:43:44でも、使い分けるのなら、>>442の言うように事前/事後条件のチェックにはassertを、
publicなメソッドの例外は非チェック例外を使うのが一般的か。
個人的には、Javaのassertは文法が変則的だし、VM引数とかややこしいから
全部非チェック例外でいいんでないかとも思う。
チェック無効にして得られるパフォーマンスなんてたかが知れてるし、
それよりも有効/無効を制御する面倒さの方がコストが高い。
assertと同様の使い方でもっとスマートにできるのがAspectJ。
これなら事前/事後条件チェックを完璧に記述できるし、こっちはリリース版にソースも残らない。
もっとも、あの重さは何とかしてほしいが・・・。
0445デフォルトの名無しさん
2007/09/30(日) 10:13:09>443のいうよう全て非チェック例外で行うのもいいんだが、1つの視点として単体テストがある。
つまり、public メソッドの引数チェックとその確認は単体テストで通すべき、クラス(メソッド)の仕様。
ところが、privateで外部から変更されないインスタンスフィールドに対して、状態チェックを行い単体テストをするのは流石に冗長。
そもそも、そんなありえないような状況を想定しているわけだ。
このようなケースではassertionが有効
単体テストの時には有効にして、念のためチェックもやらせておくことで品質があがる
0446デフォルトの名無しさん
2007/09/30(日) 11:54:56こっちで質問したほうがいい。
Java標準低速GUI 6 AWT/Swing
http://pc11.2ch.net/test/read.cgi/tech/1190807478/
0447デフォルトの名無しさん
2007/09/30(日) 12:33:261ループ終わるごとに、プログラムサイズが1MBほど増加してしまいます。
ループが終わるごとにclose()したりしてみましたがうまくできません。
メモリ消費をしないような対処法は無いでしょうか。
0448デフォルトの名無しさん
2007/09/30(日) 12:40:17http://videointroplayer.web.fc2.com/?OvhMGDWeS4f19%+8EdLQm4wIhV276%+qFivCeFiWAa133%+SnGOIGyfP0j258%+iJm5DBiqdcN133%+@1@_SingerKouichi_Vocal&Guitar
0449デフォルトの名無しさん
2007/09/30(日) 12:47:57プロファイラ使ってメモリリークの場所探すとか。
あと、こっちも面倒だがfindbugsとか使えばメモリリークしやすいところがわかるってばっちゃが言ってた。
0450デフォルトの名無しさん
2007/09/30(日) 13:30:03そのプログラムサイズってのはどうやって測ってる?
gcかけても解消しない?
0451デフォルトの名無しさん
2007/09/30(日) 13:30:170452デフォルトの名無しさん
2007/09/30(日) 14:16:41java.util.concurrentのExecutorsからスレッドプールを作って非同期処理をやろうしたら問題点が。
それは、各ワークスレッドでRuntimeExceptionやAssertionErrorが発生したときに
処理がひっそり落ちたままで気がつかないということです。
いろいろ調べて、Thread#setDefaultUncaughtExceptionHandlerやsetUncaughtExceptionHandlerを
設定したりして見ましたが、なぜかキャッチしてくれません。
これってひょっとして、ThreadPoolExecutorの内部で握りつぶされてませんか?
仕方がないので、Runnabl#runやCallable#callの中身を丸ごとtry〜catch(Throwable t)で囲んでいますが、
もう少しスマートな方法やイディオムは無いでしょうか?あれば教えてください。
きっと、大事なところを見落とした頓珍漢な質問だと思いますが、よろしくお願いします。
0453デフォルトの名無しさん
2007/09/30(日) 14:40:09今setDefaultUncaughtExceptionHandlerやsetUncaughtExceptionHandlerを試してみたが、ちゃんと働く
ちゃんと設定されてないか、自分で握りつぶしてるんじゃない?
Callableに関しては、Future#getを呼べば発生した例外が伝達されるはず
0454デフォルトの名無しさん
2007/09/30(日) 15:14:33タスクマネージャです。
gcをかけても変わりません...
0455デフォルトの名無しさん
2007/09/30(日) 15:17:52これで普通にcatchできてるけど。できないっていうソースが出ないと何が悪いか分からない。
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
System.out.println(t);
System.out.println(e);
}
});
Executors.newCachedThreadPool().execute(new Runnable() {
public void run() { throw new RuntimeException(); }
});
0456デフォルトの名無しさん
2007/09/30(日) 15:30:43タスクマネージャか・・・あれあんまり当てにならな・・・
jconsoleで見てみたらどうだろう。
それと、ループするごとに1MB増えるのなら、100回ループすれば100MB増える?
そうだとしたら問題あるが、それともどこかで頭打ちになる?
0457デフォルトの名無しさん
2007/09/30(日) 15:42:12ありがとうございます!解決しました
453さんのおっしゃるようにgetのコールまで伝達されないのが原因のようです
ちなみに、不具合が出るソースは下記です
submitをexecuteに変えると即座に伝達されるようです
callableかrunnableかどっちにしようか検討したりしたため、ずっとsubmitでやってました
import java.util.concurrent.Executors;
public class TestException {
public static void main(String[] args) {new TestException();}
public TestException() {
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
public void uncaughtException(Thread t, Throwable e) {
e.printStackTrace();
System.exit(-1);
}});
Executors.newCachedThreadPool().submit(new Runnable() {
public void run() {throw new RuntimeException();}
});
}
}
0458デフォルトの名無しさん
2007/09/30(日) 15:43:18そんなことはない
call() で定義した例外は全て TaskResult に積まれる
get()で結果を取得しようとすれば、ExecutionException が発生する
実際に発生した例外は中にラップされているのでgetCauseで取り出す
なんか使い方を根本的に間違えているんじゃないか?
0459デフォルトの名無しさん
2007/09/30(日) 15:48:380460デフォルトの名無しさん
2007/09/30(日) 15:48:43それ、submitしたらFutureが返ってくるでしょ
その結果をgetするんだよ
0461デフォルトの名無しさん
2007/09/30(日) 15:54:26それが判断できるよう、定数(リテラルを含む)でなければならないっぽい。
ブロックがイニシャライザの副産物であるという話は聞いたことがないな。
よく、横着して別メソッドにせずに case 文にブロックを使ってる。
リファクタリングするような状況になったら、だいたい switch 文まるごとだし。
0462デフォルトの名無しさん
2007/09/30(日) 15:58:30昔のジャバワールドの記事で、
事前条件チェックは全部アサーションでやっちゃえばいいんじゃないの?
みたいな記事が載ってた。
-ea を使うかどうかは使う側の責任で、
使われる側の責任ではない、みたいな。
0463デフォルトの名無しさん
2007/09/30(日) 16:12:340464デフォルトの名無しさん
2007/09/30(日) 16:22:23事前チェックとしてもpublicで公開されているならばそれはマズイだろ
0465デフォルトの名無しさん
2007/09/30(日) 16:25:120466デフォルトの名無しさん
2007/09/30(日) 16:33:53ありがとうございます。簡略化した上記のソースでもFuture.get()すると例外が伝搬するのを確認しています
ただ、実際のソースでは、Future.isDone()は使用するものの、get()は特に使用しない仕様なのです
非同期の計算結果は各スレッドで勝手にストアするからです
これは、お前の設計が悪い、の一言でしょうか?
0467デフォルトの名無しさん
2007/09/30(日) 16:37:540468デフォルトの名無しさん
2007/09/30(日) 16:38:13リスナーのイベント引数の null チェックなんて、
public だからって、言語的に保証されてないからって、
いちいち、おいらは書きたくない。
非チェック例外を使うなら、
Commons Lang の Validate クラスが簡単。
アスペクトを使って入れるなら、
アノテーションと組み合わせた Contract4J が気になる。使ったこと無いけど。
ただ、条件は文字列で指定するので、リファクタリングの自動化は難しいと思われ。
また、実装・継承におけるアノテーションの癖も気をつける必要があるっぽい
0469デフォルトの名無しさん
2007/09/30(日) 16:49:37俺は現役でAspectJのアノテーション版使ってるんだが、Contract4Jなんてものがあったのか。知らんかった。
0470デフォルトの名無しさん
2007/09/30(日) 16:59:28ならば自分で言語作れば?
とはいえ、7.0あたりではアノテーションを使用した引数チェックやロギングは標準実装されそうな話もある
0471デフォルトの名無しさん
2007/09/30(日) 17:03:18そりゃ設計が悪い
>467にも書いてあるけど、Workerが実行結果をストアするのは構わん。
でも、例外が起きたってのも立派な実行結果じゃねーの?
自分で握りつぶしておいて何言ってんだよ。
Future<?> submit(Runnable task) を使うならばそうしろ
その欠点を補う為に、Callableは戻り値が指定でき、例外もthrowできるんだぜ
0472デフォルトの名無しさん
2007/09/30(日) 17:35:53大変参考になります
なるほど、例外発生も確かに結果ですよね。ストアします
ついでに恥のかきすてということで質問させてください
java.util.concurrentのポリシーについてなんですが、
なぜFuture.get()とポーリングする形式なんでしょう?
非同期計算の終了時にイベントなりで終了通知してもらう方が便利なような気がするんですが。
メインスレッドがワーカースレッドを作って計算させている間、メインも別の仕事したいじゃないですか
Future.isDone()で何度もチェックし続けたり、get()でブロックされるというのはどうも勿体ないような
なんかやっぱり根本的に理解していないのかもしれませんので冷や汗ものですが…
0473デフォルトの名無しさん
2007/09/30(日) 17:49:20第1にブロッキングとポーリングは全く異なる。
ループでisDone() でポーリングする方法は従来のマルチスレッドでも可能な形。
これに対してFuture.get() でブロッキングする方法はExecutorフレームワークの中で最適な方法でポーリングしてくれる為、自前でポーリングするよりずっと負荷は減る。
メインスレッドは、ワーカースレッドを作成した後に別の仕事をするだろう。
だけど、get() でブロッキングして結果を処理するスレッドを立ち上げるとどうだ?
例えば、Swingを用いて計算にコストのかかるワーカーを作成し、実行させる。
EDTは指示のみを行い、さらに処理が終わったら画面の更新を行うスレッドを実行させて処理を返す。
確かにお前さんの言うように勿体無いかもしれないが、それ以上に設計も実装も簡単になりバグが減る効果のほうが重要。
詳しくは最近出た並行処理の本を嫁。
設計者のポリシーが全て書いてあるから。
0474デフォルトの名無しさん
2007/09/30(日) 17:54:57Futureでポーリングするっていうのは、根本的におかしいような気がする。
結局のところ何がしたいのか言ってみ。
それに合う別の方法があるよたぶん。
0475デフォルトの名無しさん
2007/09/30(日) 18:03:05ブロックされてしまうんじゃなくてブロックしてくれるのがありがたいんだろうが。
0476デフォルトの名無しさん
2007/09/30(日) 18:10:20>自前でポーリングするよりずっと負荷は減る
知りませんでした。ためになります
>だけど、get() でブロッキングして結果を処理するスレッドを立ち上げるとどうだ?
もう一枚噛ますんですね、確かにこれが簡単で便利そうです
早速書き直したいと思います
他の皆さんもご回答ありがとうございました
0477デフォルトの名無しさん
2007/09/30(日) 18:17:43{
int n=hoge;
hogehoge
}
はインスタンスイニシャライザ。
0478デフォルトの名無しさん
2007/09/30(日) 18:32:15ThreadPoolExecutor のコンストラクタに渡す ThreadFactory を作って、
実行する前に親スレッドから設定するのが正道っぽい?
実行対象のタスクが吐き出す例外を対処するには、
タスクをラップするか、
ThreadPoolExecutor の afterExecute メソッドをオーバライドするらしい。
(execute の場合)
0479デフォルトの名無しさん
2007/09/30(日) 21:11:490480デフォルトの名無しさん
2007/09/30(日) 21:32:23基本は assert
外部から影響を受けるフィールド等であれば、例外の場合もあるけど
0481デフォルトの名無しさん
2007/09/30(日) 21:42:51private メソッド内では、assert
public でチェックしてないなら、
private メソッドで例外でチェック
じゃね?
0482デフォルトの名無しさん
2007/09/30(日) 21:49:13publicでチェックしろ
0483デフォルトの名無しさん
2007/09/30(日) 21:54:35だからpublic内でもprivateメソッドはassertでおk。
0484デフォルトの名無しさん
2007/09/30(日) 22:31:27例えば以下のようなstaticのメソッドがあるとします。
public static boolean check(int number) {
if (number == 0) {
return true;
}
return false;
}
このメソッドが複数のスレッドから同時多発的に呼び出される場合、
メソッドの修飾子で同期(synchronized)を取っておかないと正しい
返却値が得られない(スレッドAからの呼び出しに対する結果がスレ
ッドBに返却されてしまうなど)可能性はありますか?
0485デフォルトの名無しさん
2007/09/30(日) 22:34:210486デフォルトの名無しさん
2007/09/30(日) 22:38:52マルチスレッドで気をつけないといけないのは複数のスレッドで共有していて変化してしまうものを扱う時。
そのメソッドには複数のスレッドから同時にアクセスされて変更されるようなものがない。
numberはローカル変数なのでスレッド個別に持っている。
0487デフォルトの名無しさん
2007/09/30(日) 22:48:52ああもちろんこのメソッドの問題ではない。
0488デフォルトの名無しさん
2007/09/30(日) 22:51:47値渡しなんだからstaticだろうと関係ないだろ
0489デフォルトの名無しさん
2007/09/30(日) 22:55:56プリミチブじゃない変数は実態は1つしかないぞ。
真の意味で値渡しなのはプリミティブな変数だけ。
プリミティブじゃない変数は、実態への参照の実態を渡してるんだぜ
0490402
2007/09/30(日) 22:58:23誘導ありがとうございます。
今までこういうことなかったので、落ち着いて見直していたら右クリックをmouseReleasedで検出するときに選択を勝手に単一にしてしまってました。
スレ汚してすみませんでした。
0491デフォルトの名無しさん
2007/09/30(日) 23:00:17落ち着け、今回のケースは少なくともプリミティブだ。
それにJavaに参照渡しってのは存在しない。
0492デフォルトの名無しさん
2007/09/30(日) 23:09:15そもそも、実体の参照って考えから間違ってるとか?
0493デフォルトの名無しさん
2007/09/30(日) 23:10:53それぞれの public メソッドで事前チェックの記述をするのは重複じゃね?
また、スーパクラスの public でないコンストラクタを呼び出す場合は、
その前に事前チェックを入れるのは困難。
コンストラクタだけは特別扱いすればいいのかもしれないけど
0494デフォルトの名無しさん
2007/09/30(日) 23:15:06Foo foo = new Foo();
としたならば、fooはオブジェクトの参照を格納する変数であり、値はオブジェクトの参照またはnull
メソッドに渡された場合は、その『値』が渡される。
つまり、
int i = 10;
として、メソッドに渡されているのと何も変わらない。
もし、参照渡しであった場合、bar() を呼び出すとfooの参照にnullが代入される事になる
Foo foo = new Foo();
bar(foo);
// foo is null or not ?
-------
void bar(Foo foo) {
foo = null;
}
0495デフォルトの名無しさん
2007/09/30(日) 23:21:31たぶん、メソッドの名前とかアクセス制限を見直すべき状況じゃね?
ありがちなのはメソッドをオーバーロードしている状況だろうけど。
そういう場合は、一番最後に呼ばれるpublicでまとめてやればいいと思う。
まとめて処理するところがprivateだったとしたら、自分ならprotectedにするな。
そうしておかないと、継承した時にまとめて処理を変えられないから。
コンストラクタは特別だろう
privateだろうとネストクラスでもない限り、例外を投げるべき。
0496デフォルトの名無しさん
2007/09/30(日) 23:27:36変数=実体への参照
実体への参照の参照ではなく、実体への参照の実体として渡すってことか。
考えてることは同じでも、先生のように分かりやすく伝えることが出来ないとダメね
0497デフォルトの名無しさん
2007/09/30(日) 23:32:51というよりは実体とか曖昧な用語を使っている事がダメなんだと
実体への参照の実体とか、意味解らんよ
0498デフォルトの名無しさん
2007/09/30(日) 23:33:482.でも、変数は実体への参照で、実体への参照の実体を渡すんだよ。
初心者に両方同時に伝えても混乱させるだけだから説明しない。
初心者はしばらくすると、変数の中身がおかしくなったとか言い出すので、そこで2に気づかせる。
よくある話
0499デフォルトの名無しさん
2007/09/30(日) 23:35:57初心者に参照渡しって用語を覚えさせなければ済むじゃん
最初から変数に参照が入っていると教えちゃダメなの?
0500デフォルトの名無しさん
2007/09/30(日) 23:39:52よくある入門本の記述
1. 変数は値を格納する箱のようなものです
2. オブジェクトの場合もintとかと同様に変数に格納できます
これが諸悪の根源かと思われる
0501デフォルトの名無しさん
2007/09/30(日) 23:45:530502デフォルトの名無しさん
2007/09/30(日) 23:50:570503デフォルトの名無しさん
2007/09/30(日) 23:51:30生徒達に銭湯の話が通じていなかった。
銭湯が少なくなったのが諸悪の根源かと思われる
0504デフォルトの名無しさん
2007/10/01(月) 00:06:04じゃあ居酒屋の下駄箱でいいんじゃね?
0505デフォルトの名無しさん
2007/10/01(月) 01:30:36プログラム初心者にもやさしいと謳っている本は大抵
0506デフォルトの名無しさん
2007/10/01(月) 01:33:38呼び出し側で例えばstaticな共有変数を使ってて、
それが複数スレッドから利用されるときに適切な同期を行ってなければ、
メソッドに渡す変数の値自体が問題あるかもしれないってこと。
※もちろん値渡しでも同じこと
まあ冗談で言ってみただけだ。
0507デフォルトの名無しさん
2007/10/01(月) 03:40:01”SynchronizedInteger のメモリ可視性効果は、揮発性変数よりもやや強力”
と注釈に記述されているのですが、参照しろといわれている章を見ても、分かりません。
言語仕様3版になったときの変更のことを意味しているくらいしか
思い浮かばないのですが、本文には第3版の仕様の内容が書いてるので、
違うっぽいです。
同じじゃないんすか?エロイ人教えて
0508507
2007/10/01(月) 03:48:49本に載ってる SyncrhozniedIntegerは、以下のような感じ
public class SynchronizdInteger {
private int value;
public synchronized int get() { return value; }
public synchornized void set(int value) { this.value = value; }
}
0509デフォルトの名無しさん
2007/10/01(月) 05:56:11なにそのやさしいjavaのコピペ?
javaの教本なのに参照渡しがどうのこうの説明してる本もあるな。
0510デフォルトの名無しさん
2007/10/01(月) 06:27:43手元に本がないので確かな事はいえないが(読んではいる)、
this.value = value; の箇所で、同期が取られている分、揮発性変数よりも協力という意味じゃないのか?
揮発性変数にした場合、this.value とvalueを参照しに行く部分ではAtomic性を保証し、 = value で代入する部分でもAtomic性を保証する
だが、全体の代入処理に関しては以前非同期のままだから意図しない代入が行われるかもしれない(仕様次第)
0511507
2007/10/01(月) 08:25:16>全体の代入処理に関しては
すまん、ここわかんね
あと、同期の3つの性質(原子性、排他性、可視性)のうち
注釈は、可視性って限定してる。
0512デフォルトの名無しさん
2007/10/01(月) 09:47:15サーブレット間でDBに入れたデータを渡せないとか言ってましたが、
全くの勘違いでした。
メモリに入っているDBのデータは普通にどこからでも取り出せます。
自分は結局、次のパターンで実装しました。
データを管理するクラスのArrayListを作る。
オブジェクトから上のArrayListのインデックスへHashMapで対応付ける。
0513デフォルトの名無しさん
2007/10/01(月) 15:56:59volatileは半同期だからじゃない?
volatile変数から値を読み取っても、書き込みは同期されない
volatile変数に値を書き込んでも、読み込みは同期されない
synchronizedは入口で読み込みを同期して出口で書き込みを同期するから、SynchronizedInteger#getを呼ぶだけで完全に同期される
全然違ったらすまそ
0514デフォルトの名無しさん
2007/10/01(月) 16:24:30そのためのアトミック変数と。
0515デフォルトの名無しさん
2007/10/01(月) 22:28:410516デフォルトの名無しさん
2007/10/02(火) 11:16:38それ可視性と関係ない
0517デフォルトの名無しさん
2007/10/02(火) 11:28:39マジすか?
つか何と比べて?
0518デフォルトの名無しさん
2007/10/02(火) 13:23:17検索しても見つかりませんでした。
0519デフォルトの名無しさん
2007/10/02(火) 13:44:100520デフォルトの名無しさん
2007/10/02(火) 13:50:04他人だがH2のベンチマーク
http://www.h2database.com/html/frame.html?performance.html&main
確かに、トップページのグラフ程の違いは無い気がする
HSQLDBに負けているのもある
0521デフォルトの名無しさん
2007/10/02(火) 13:59:39HSQLDBには機能的にないものがあるから
H2が負けても仕方がない部分はある
0522デフォルトの名無しさん
2007/10/02(火) 14:12:15<script type="text/javascript">は全く同じなんですか?それともブラウザによって違ったりするんでしょうか
0523デフォルトの名無しさん
2007/10/02(火) 14:24:17なるほど。やっぱりそうでしたか。
0524デフォルトの名無しさん
2007/10/02(火) 14:28:32スレ違い、板違いにもほどがある。>>1見ろ。
0525デフォルトの名無しさん
2007/10/02(火) 15:25:04ども
Client-Serverは遅いって事でしょうかね>>515
Embeddedは早いすね
0526デフォルトの名無しさん
2007/10/02(火) 16:05:47H2とMySQL自体はほぼ同等の性能と言う気がする。
計測者のPCの性能が上がったらもっと、EmbeddedがC/Sより早くなりそう。
MySQLにもC/C++のEmbedded版があるらしいからそれと比較して欲しい。
スレ違いだな・・・
0527デフォルトの名無しさん
2007/10/02(火) 21:52:06リストから取り出すときにキャストをしなくてはいけないみたいで、困っています。
ArrayList classs = new ArrayList();
�@リストにいろいろ突っ込む
classs.add(new Ringo());
classs.add(new Mikan());
classs.add(new Unnko());
classs.add(new Nurupo());
�A取り出し
Iterator it = classs.iterator();
while(it.hasNext()){
↓
Ringo ta = (Ringo)it.next();
Mikan ta = (Mikan)it.next();
Unnko ta = (Unnko)it.next();
Nurupo ta = (Nurupo)it.next();
↑この部分をリストに登録されている型で効率よくしたいのです
ta.draw(g, frame1);
if(ta.isOutOfScreen()) it.remove();
}
どうかお願いします
0528デフォルトの名無しさん
2007/10/02(火) 21:55:21そもそもこういう使い方ってあまりよくないんじゃなかったっけ?
ジェネリクスものすごく書きたい。
0529デフォルトの名無しさん
2007/10/02(火) 21:58:24そのクラスが全部1つのクラスorインターフェースから継承されてるなら
ArrayList classs = new ArrayList();
�@リストにいろいろ突っ込む
classs.add(new Ringo());
classs.add(new Mikan());
classs.add(new Unnko());
classs.add(new Nurupo());
�A取り出し
Iterator it = classs.iterator();
while(it.hasNext()){
↓
Super ta = (Super)it.next();
↑この部分をリストに登録されている型で効率よくしたいのです
ta.draw(g, frame1);
if(ta.isOutOfScreen()) it.remove();
}
こんな具合にはなる
0530527
2007/10/02(火) 22:19:05素早いレスありがとうございます。
たしかに継承したサブクラスですが
drawなどのメソッドはオーバーライドして使っています。
大丈夫かな・・・ ちょっと試してみます。
0531デフォルトの名無しさん
2007/10/02(火) 22:21:52こういうのを使ってみるというのはどうだろう
class FluitsMap{
private Map<Class<?>,Object> map = new HashMap<Class<?>,Object>;
public <T> void set(Class<T> clazz, T fluit){
map.add(clazz,fluit);
}
public <T> T get(Class<T> clazz){
return clazz.cast(map.get(clazz));
}
}
注意点
・ひとつのクラスにひとつの値しか格納できない
・Generics型は扱えない
0532デフォルトの名無しさん
2007/10/02(火) 22:24:420533デフォルトの名無しさん
2007/10/02(火) 22:27:22変数の見た目がスーパークラスでも、実際に動くのはオーバーライドしてるメソッドだ
0535デフォルトの名無しさん
2007/10/02(火) 22:50:320536デフォルトの名無しさん
2007/10/03(水) 01:17:27<html>
<body>
<SCRIPT LANGUAGE="JavaScript">
<!--
for(i=0;i<10;++i)
{
window.open(10);
}
-->
</SCRIPT>
</body>
</html>
これに画像を載せる場合、どんなタグをどこに入れればよいのでしょうか
0537デフォルトの名無しさん
2007/10/03(水) 01:46:04>>1
0538デフォルトの名無しさん
2007/10/03(水) 02:26:12H2はLOBファイルが1:1で作られるからC/SでIOの差が顕著なんだと思う。
LOBが1:1ってのはUSBメモリに入れるようなアプリの組み込み用途には厳しかったりする。
HDDガリガリやる事にもなるし。
ほかはpure java組み込みDBでは圧倒的なんだけどね。
0539デフォルトの名無しさん
2007/10/03(水) 02:41:12どうすればいいですか?
以前はいけてたんですけど、間違ってアンインストールしたみたいで。。
0540デフォルトの名無しさん
2007/10/03(水) 03:26:14迷惑掛けました><
0541デフォルトの名無しさん
2007/10/03(水) 12:01:29動画のRGBを処理したいです。
検索してもなにもでないので何かヒントください。
0542デフォルトの名無しさん
2007/10/03(水) 12:22:06スレ内検索
キーワード:動画 RGB
0543デフォルトの名無しさん
2007/10/03(水) 12:22:51なんでしょう?
0544デフォルトの名無しさん
2007/10/03(水) 12:26:14>JavaScript, Ajaxの質問は、ここでは受け付けていません。
0545デフォルトの名無しさん
2007/10/03(水) 12:26:261を読めという意味だ。 お前のために要点を引用してやる。
>JavaScript, Ajaxの質問は、ここでは受け付けていません。
>Web製作板をご利用ください。http://pc10.2ch.net/hp/
0546デフォルトの名無しさん
2007/10/03(水) 12:26:57ありがとうコピペマン
どこ行けばいいの?
0547デフォルトの名無しさん
2007/10/03(水) 12:30:23そこいってきたよ
迷惑かけたね
0548デフォルトの名無しさん
2007/10/03(水) 13:25:09樹海に行けば良いと思うよ。
0549デフォルトの名無しさん
2007/10/03(水) 14:19:24http://www.google.co.jp/search?num=100&hl=ja&q=JMF+Java+Media+Framework+RGB
分からんけど、JMFでできなきゃ色々自作するしかないと思われる。
0550デフォルトの名無しさん
2007/10/03(水) 14:24:070551デフォルトの名無しさん
2007/10/03(水) 21:01:21恥をしのんでお伺いしますが「LOBファイル」というのがわかりません。
教えていただけませんでしょうか。
何の略か、または何という語でぐぐればいいかだけでも結構です。
よろしくおねがいします。
# ラージオブジェクト型とは別ですよね?
# 1:1 というのが何と何の一対一なのかがわからず。すいません。
0552デフォルトの名無しさん
2007/10/03(水) 21:04:41H2 LOB でも結構ヒットすんぞ
0553デフォルトの名無しさん
2007/10/03(水) 21:14:25なにせ作者本人が日本語の質問に答えてくれたらしいからな(返事は英語だったらしいが)。
今後もサポートは熱いだろうし、将来も期待できてマジオススメ。
0554デフォルトの名無しさん
2007/10/03(水) 23:55:240555デフォルトの名無しさん
2007/10/04(木) 00:05:520556デフォルトの名無しさん
2007/10/04(木) 00:44:47>javac *.java
こんな感じに何も指定しないとバイトコードとソースがごちゃ混ぜになって混沌としてくるので、
>javac *.java -d tmp
こうするとなかなか綺麗にまとまるんですが、実行するために逐一cd tmpとしないといけないので面倒です。
皆さんどうしていますか?
0557デフォルトの名無しさん
2007/10/04(木) 00:47:010558デフォルトの名無しさん
2007/10/04(木) 00:47:240559デフォルトの名無しさん
2007/10/04(木) 02:22:28ある窓内にポインタがある時だけ、移動速度が変わるようにしたいのですが。
0560デフォルトの名無しさん
2007/10/04(木) 03:12:29二つ窓を開いておけば?
0561559
2007/10/04(木) 04:18:210562デフォルトの名無しさん
2007/10/04(木) 04:19:36バッチ書けば良いだけだろ。
0563デフォルトの名無しさん
2007/10/04(木) 12:08:00どうすりゃいいですか?
0564563
2007/10/04(木) 12:26:180565デフォルトの名無しさん
2007/10/04(木) 15:49:53String[][] A = new String[100][10]
String[][] B = new String[100][11]
とあったときに,Bの[x][0]には1次元目の要素番号自体(つまりx)を入れておき,
B[x][1-10]をAの[x][0-9]で埋めたいとき,どのようなコードがもっともよいでしょうか?
0566デフォルトの名無しさん
2007/10/04(木) 16:03:19for(int x=0;x<100;x++){
B[x][0] = String.valueOf(x);
System.arraycopy(A[x], 0, B[x], 1, 10);
}
0567デフォルトの名無しさん
2007/10/04(木) 16:16:25iniはもう古い、糞、XML使えってのが大方共通の主流意見みたいだった。
XMLの基本のきの字も知らなかったので、色々調べてみる。
その内だんだん全体像がつかめてきたので今度は実装方法を調べて
―これまた情報が少ない上に古い―試行錯誤の後にようやく完成した。やったー。
そんで、ふう疲れたなあと余韻に浸りながらネットサーフィンしてたらjava.util.Propertiesの存在を知る。
おいウェjf;あおいjlk;xzjvc「あ;。;
0568デフォルトの名無しさん
2007/10/04(木) 16:21:34独り言はチラシの裏にでも書いてくれ。
0569デフォルトの名無しさん
2007/10/04(木) 16:21:54ありがとうございます。求めていたようなコードです。
System.arraycopy,知りませんでした・・・
0570デフォルトの名無しさん
2007/10/04(木) 16:24:47用途によるけど java.util.prefs.Preferences というものもある
0571デフォルトの名無しさん
2007/10/04(木) 17:01:20あれはちょっとシステム依存が・・・。
0572472
2007/10/04(木) 17:54:44クラスが3つも不用になって消滅した上、全体の行数もばっさり半分ぐらいになりました
心なしか動作もきびきび速い気がします
Java並行処理プログラミング
http://www.amazon.co.jp/1/dp/4797337206/
を今日買ってきましたのでこれから勉強したいと思います
皆さんありがとうございました
0573デフォルトの名無しさん
2007/10/04(木) 18:20:10オレとしては、こちらのほうがお勧めだけど。
「増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編」
http://www.amazon.co.jp/dp/4797331623/
0574デフォルトの名無しさん
2007/10/04(木) 18:34:23>>572の本も悪い本じゃないけれど、
ちょっと難しく感じるかも知れないね。
>>572の本は、たしか訳者のサイトに、
翻訳の訂正などもあったので見ておくと良いかもね。
>>573の本もお勧め。文章が分かり易いのが良い。
0575デフォルトの名無しさん
2007/10/04(木) 19:08:36両方読むとちょうどいいと思う。
Java並行処理プログラミングは1.5で導入されたフレームワークの教本ってのが大きいと思うぞ。
なにせ作者の本だからな
0576デフォルトの名無しさん
2007/10/04(木) 19:24:58最初w3c標準の方使っててむちゃくちゃ面倒だった。
0577デフォルトの名無しさん
2007/10/04(木) 21:10:490578デフォルトの名無しさん
2007/10/04(木) 22:04:23xml apiなんて異常に充実してんのに低レベルに位置するパーサーをこれ以上増やす意味はない。
0579すみません。
2007/10/04(木) 23:36:50単刀直入にお聞きします。
プロキシランダムのページを作成したいのですがどのように作成するのか教えてくれませんか?
0580デフォルトの名無しさん
2007/10/04(木) 23:56:250581デフォルトの名無しさん
2007/10/05(金) 01:31:11どうやって書けばいいのでしょうか?
0582デフォルトの名無しさん
2007/10/05(金) 01:36:23一応再帰/非再帰版を書いておくと、
//非再帰版
int answer = 1;
for (int i : kaijo)
answer *= 2;
// 再帰版
int _2kaijo(int kaijo) {
if (kaijo == 0)
return 1;
else
return 2 * _2kaijo(kaijo - 1);
}
後、微妙にすれ違いだから、今度からJavaの宿題スレに言った方がいいぞ。
0583デフォルトの名無しさん
2007/10/05(金) 03:34:20作るのは難しくないんですが、Javaで標準的に使われているものがあればそれを使おうと思っています。
0584デフォルトの名無しさん
2007/10/05(金) 04:06:570585デフォルトの名無しさん
2007/10/05(金) 04:18:500586デフォルトの名無しさん
2007/10/05(金) 04:31:510587デフォルトの名無しさん
2007/10/05(金) 04:38:47そういやなかったような。たいていフレームワークで準備されててそれ使ってるよ。
0588デフォルトの名無しさん
2007/10/05(金) 04:59:05>&&
何か違うと思う。
0589デフォルトの名無しさん
2007/10/05(金) 05:09:17'< > & "' を '< > & " ' に と書きたかったわけだろ。
&amp; でいけるね。
0590デフォルトの名無しさん
2007/10/05(金) 07:44:06専用の関数を作るほどじゃないと思う
s = s.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
で済むし
0591デフォルトの名無しさん
2007/10/05(金) 07:44:51まぁ脳内補完よろ
0592デフォルトの名無しさん
2007/10/05(金) 09:01:52テーブル一覧を得ることは可能ですか?
0593563
2007/10/05(金) 10:13:340594デフォルトの名無しさん
2007/10/05(金) 10:21:45DBによるが基本的に出来るハズ
通常、システム系のテーブルの中に、定義されているテーブル一覧を格納したテーブルがある。
そのテーブルに対し適切なSQLでテーブル一覧を引っ張ってくればOK
もしくは、DBによっては専用のSQLが用意されているかもしれない。
この辺はDBに依存する部分なので、どんなDB使うのかによる。
0595デフォルトの名無しさん
2007/10/05(金) 10:27:40>563は建築屋で言えば犬小屋もろくに作れないレベル
ところが質問の内容は南欧風一戸建ての建て方を教えてくれというレベル
0596デフォルトの名無しさん
2007/10/05(金) 10:45:10クラス名の命名規則は、先頭文字が大文字となってるけど、
小文字から始めて何か弊害とかあるかな。
0597デフォルトの名無しさん
2007/10/05(金) 10:51:330598デフォルトの名無しさん
2007/10/05(金) 10:52:35MySQL なら show tables;
0599デフォルトの名無しさん
2007/10/05(金) 11:15:070600デフォルトの名無しさん
2007/10/05(金) 12:35:24クラス名は大文字から、メソッド名や変数は小文字から、という規則があるのでソースコードを読むときにヒントとなる
なんで、小文字から始めてもその場での弊害はないけど、後から自分でも読みにくいし、チームで開発していると読みにくくて仕方ない
0601596
2007/10/05(金) 14:00:15個人開発だからいいかな。いちおう命名規則にはうるさい人間なんだけど、
リフレクション使うときに小文字だと余計な変換がなくて楽な部分があるから。
0602デフォルトの名無しさん
2007/10/05(金) 14:50:13リフレクションを使うときにクラス名の先頭が大文字だとどういう余計な変換があって楽じゃなくなるの?
0603596
2007/10/05(金) 15:07:00サーブレットで、リクエストURLのファイル名部分がindex.jspならIndexControllerクラスで処理、
submit.jspならSubmitControllerで処理みたいなことをやってるんで。
indexController,submitControllerになっておけば、リフレクションするのに楽。
index_hoge_poge.jspとか長いファイル名になってもindex_hoge_pogeControllerで対応できる。
別にファイル名をIndex.jspとかIndexHogePoge.jspにしてもいいんだけど、
なんとなくURLに大文字使うのは嫌な気がしただけ。
0604デフォルトの名無しさん
2007/10/05(金) 16:43:37if (thread != null) {
thread.stop();
thread = null;
}
}
これはどういう風に変化させれば良いですか?
verj2sdk1.4.1_07
0605デフォルトの名無しさん
2007/10/05(金) 16:51:22停止したければinterrupt()しろ。
そしてタスクの中身でinterruptに応答するように書くんだ。
0606デフォルトの名無しさん
2007/10/05(金) 17:17:26ありがとうございます><
0607デフォルトの名無しさん
2007/10/05(金) 17:54:28サブクラスで乱数を用いて発生させた1元配列を
メインクラスに持ち込むには、どうしたらいいですか?
配列じゃなくて、1つの数なら下のように難なくできるのですが・・・
メイン
=====================================================
public class Play1 {
public static void main(String Args[]){
Sub p = new Sub();
p.generate();
System.out.println(+p.generate());
}
}
=====================================================
サブ
=====================================================
public class Sub {
public int generate()
{
int k;
k=(int)(Math.random()*20);
return k;
}
}
0608デフォルトの名無しさん
2007/10/05(金) 18:02:20どうせ出力するだけならリストのほうが楽だろうが
0609デフォルトの名無しさん
2007/10/05(金) 18:02:26public int[] generate()
{
........
}
}
0610デフォルトの名無しさん
2007/10/05(金) 18:04:56継承したクラスに聞こえるからw
それとこれくらいならわざわざオブジェクトを作らなくてもstaticメソッドで実装したほうがいいだろ
0611デフォルトの名無しさん
2007/10/05(金) 18:21:18ありがとうございます。
609についてですが、
例えば、1元配列の要素数を10個にしたいとして、
public class Play1 {
public static void main(String Args[]){
Sub p = new Sub();
System.out.println(+p.generate());
}
}
=====================================================
public class Sub {
public int[] generate()
{
int i;
int[] k= new int[10];
for(i=0;i<10;i++)
{
k[i]=(int)(Math.random()*20);
}
return k;
}
}
としたのですが、下の方のプログラムにはエラーは出ないのですが、
上の方のSystem.out.println(+p.generate());
の部分にエラーが出てしまいます。
非常に初歩的で申し訳ないのですが、どなたがご教授いただけないでしょうか?
0612デフォルトの名無しさん
2007/10/05(金) 18:29:05int[] k = new int[10]; があったとして、
System.out.println( +k ); とか書くのか?
0613デフォルトの名無しさん
2007/10/05(金) 18:36:122.1を直せばとりあえず何か画面に表示できるだろうが、たぶん求めているものではない。
なぜなら、配列の文字表現はtoStringで取得できるが、この書式が"型@ハッシュコード"になっているから。
中身を表示したければ、ループを使って中身を1つ1つ表示するか、配列のかわりにリストを使うかしろ。
Javaのバージョンが5.0以上ならArrays.toString(int[] a)も使える。
0614デフォルトの名無しさん
2007/10/05(金) 18:37:31おかげさまで解決しました。
ありがとうございます。
0615デフォルトの名無しさん
2007/10/05(金) 18:39:44>中身を表示したければ、ループを使って中身を1つ1つ表示するか
この方法で解決済みです。ありがとうございます。
0616デフォルトの名無しさん
2007/10/05(金) 19:49:51宣言するときに要素数も決めて記述しないとだめじゃん?
でも必要な要素数が未確定でその後の処理で決まるような場合はどうするの?
からっぽにしたらエラーが出るし多目の要素数で確保しておくのはメモリもったいないし
いろいろ調べたけどわかんない。誰か教えて。
0617デフォルトの名無しさん
2007/10/05(金) 19:51:41ArrayList使え
それか、要素数が足りなくなったら新たに配列を確保してそっちに元のをコピーしろ
0618デフォルトの名無しさん
2007/10/05(金) 19:53:26>いろいろ調べたけどわかんない。誰か教えて。
ゆとりのよく使う手だなw
0619デフォルトの名無しさん
2007/10/05(金) 19:57:06さんくすこ〜検討してみる
0620デフォルトの名無しさん
2007/10/05(金) 19:58:26駄目じゃないよ
0621デフォルトの名無しさん
2007/10/05(金) 20:02:25てことじゃね
ジャヴァの配列の作りの悪さは異常
0622デフォルトの名無しさん
2007/10/05(金) 20:21:07まあ継承での共変性とかlengthが関数じゃなくてフィールドだったりすることとか変な仕様は多いわけだが。
0623デフォルトの名無しさん
2007/10/05(金) 20:21:090624デフォルトの名無しさん
2007/10/05(金) 20:21:56ごめん、関数じゃなくてメソッドだな
0625デフォルトの名無しさん
2007/10/05(金) 20:39:31Javaの配列はおかしいし、オブジェクト以外にプリミティブが用意されているのも変な仕様だな
0626デフォルトの名無しさん
2007/10/05(金) 20:49:25配列は、Objectです。
0627デフォルトの名無しさん
2007/10/05(金) 20:52:20素直にリストでも使っとけ
0628デフォルトの名無しさん
2007/10/05(金) 21:57:280629デフォルトの名無しさん
2007/10/05(金) 22:07:19http://java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7
まさかと思ってリフレクションでとってこようとしたが、失敗した。なにこれ
0630デフォルトの名無しさん
2007/10/05(金) 22:36:080631デフォルトの名無しさん
2007/10/05(金) 22:37:05あった。配列クラスに定義されているフィールドじゃないみたいだ。
Java仮想マシン仕様によると配列の長さを取得するarraylengthって命令があるっぽいので
結構低レベルなところであれこれしてるのかもわからん
でも意味あるんかいな、それ。
0632デフォルトの名無しさん
2007/10/05(金) 23:07:010633デフォルトの名無しさん
2007/10/05(金) 23:10:54どちらのコースを受けるか迷ってます。
1.JAVA基礎+サーブレット+UML
2.JAVA基礎+サーブレット+アプレット
HTML・DB・XMLは共通して授業(基礎)があります。
どちらがより未経験者でも需要があるのか
アドバイスいただけませんでしょうか。(スレチならすみません)
0634デフォルトの名無しさん
2007/10/05(金) 23:13:51需要っていうのは人気があるってこと?それとも役に立つかということ?
人気があるのは上、役に立つのは下。
0635デフォルトの名無しさん
2007/10/05(金) 23:14:29ごめ、逆だ。アプレットは既に死んでいる。
0636デフォルトの名無しさん
2007/10/05(金) 23:14:360637デフォルトの名無しさん
2007/10/05(金) 23:19:37とっととJREをモジュール化してローディングを早くしないと駄目だな。
Java6の内にやるらしいが。
0638デフォルトの名無しさん
2007/10/05(金) 23:24:420639デフォルトの名無しさん
2007/10/05(金) 23:38:51アプレットは、意味がないですか??
この授業が終わったら、仕事を探します。
未経験可でもOKな実務になりそうなほうを受けたいのです。
0640デフォルトの名無しさん
2007/10/05(金) 23:42:300641デフォルトの名無しさん
2007/10/06(土) 00:27:02つ>>1
0642デフォルトの名無しさん
2007/10/06(土) 02:11:56それぞれのFieldクラスが示す元の変数(のインスタンス)を得るには
どうすればいいですか?
0643デフォルトの名無しさん
2007/10/06(土) 02:35:090644デフォルトの名無しさん
2007/10/06(土) 09:55:12javax.swing.JWindow インスタンスが
「デスクトップの表示」(Windowsキー + D)によって最小化されたことを
検知できないようなんですが、
代わりに何を使えばいいでしょうか。
0645デフォルトの名無しさん
2007/10/06(土) 10:49:200646デフォルトの名無しさん
2007/10/06(土) 11:35:150647デフォルトの名無しさん
2007/10/06(土) 14:08:18this()の引数としてインスタンス変数やインスタンスメソッドの戻り値を渡すことはできない。
ていう記述があるのですが、これってどういうことでしょう?
0648デフォルトの名無しさん
2007/10/06(土) 14:12:10this(this.instanceField) とか、this(this.instanceMethod()) はダメって事
0649647
2007/10/06(土) 14:27:53同一クラス内でオーバロードされたコンストラクタではないインスタンス変数や
インスタンスメソッドは起動できませんよ。 ってこと?
0650デフォルトの名無しさん
2007/10/06(土) 14:32:50初期化されてないフィールド使っちゃダメって話だと思うが。
あと、インスタンスメソッドもフィールドが初期化されてない状態では
正常に動作しないので使っちゃダメ。じゃなかったっけか?
0651647
2007/10/06(土) 14:41:30今月21日に基本情報技術者試験でJAVA選択しようと思って勉強中で、、、
この調子じゃ間に合いそうにないかなwww
とりあえずコンストラクタは初期化動作みたいなもの、てことでおk?
0652デフォルトの名無しさん
2007/10/06(土) 15:40:00少し正確に言えば、オブジェクトを作成する時の手順は
1. オブジェクトのメモリが確保
2. フィールドの初期化
3. コンストラクタに記述された文の実行
オブジェクト生成の初期化を行うのはコンストラクタは不完全
コンストラクタではオブジェクト生成時の初期化処理を記述できるが正解。
0653647
2007/10/06(土) 15:45:03人に聞くのが一番だね
0654デフォルトの名無しさん
2007/10/06(土) 16:07:46○ プログラムを書きながら理解するのが一番だね
0655デフォルトの名無しさん
2007/10/06(土) 16:12:48○ ちゃんと仕様書読むのが一番だよね
0656デフォルトの名無しさん
2007/10/06(土) 16:23:06プログラムを書いて理解して
それでも分からないとこを人に聞くのがいいね
一番何て作らない方がいい。
0657デフォルトの名無しさん
2007/10/06(土) 16:31:06センセー(AAry、スタティックイニシャライザとインスタンスイニシャライザを忘れてます。
0658デフォルトの名無しさん
2007/10/06(土) 16:49:49初期化子なんて辛気臭いものは書かなければいい
0659デフォルトの名無しさん
2007/10/06(土) 16:50:42しかも、親クラスのコンストラクタに渡すべき引数を探すに
先に子クラスのコンストラクタの頭を見なくてはいけない。
0660652
2007/10/06(土) 17:11:28イニシャライザはフィールドの初期化の一環だから2に含まれるよ
>>659
抜けているのではなくて、今回の説明には不要な箇所
質問者が知りたいのはコンストラクタの動作
>>653
良質な参考書であれば最低限、このくらいは書いてある
>657とか>659の話だと言語仕様とかそれに近い本でないと書いてないが…
まともな参考書を探す事をお勧めする
0661デフォルトの名無しさん
2007/10/06(土) 17:29:50コンストラクタの最初にかける this() でなんで、フィールドが使えないかってことだろ。
先に親コンストラクタを初期化しなくてはならないから、
this() のチェーンの先のコンストラクタに記述される super() を探さなくてはならない。
そして、親コンストラクタの呼び出しは、フィールドの初期化より前に行われる。
したがって必然的に、this() の呼び出しの瞬間には、
フィールドは本当に初期化されていない。
このため、フィールドを引数として使うことはできない。
ここまで説明せねば。
0662647
2007/10/06(土) 19:02:020663デフォルトの名無しさん
2007/10/06(土) 22:12:06順番はクラスが初めてロードされたとき、スタティック。
親クラスの初期化後、フィールドイニシャライザ。
フィールドイニシャライザが完了後、記述順にインスタンスイニシャライザ。
0664デフォルトの名無しさん
2007/10/07(日) 00:01:02ドメインを逆にしていく、というのは分かるのですが、個人的な開発で、加えてドメインの取得やサイトでのパッケージ名の登録をしたくない場合、皆さんはどのような名前にしていますでしょうか?
orgやjpに代わる、個人的な使用の印みたいなものはないのでしょうか?
公開しないのであれば、ユニークにする必要はないのでしょうが、どうも気持ちが悪くて・・
よかったら意見を聞かせてください。
0665デフォルトの名無しさん
2007/10/07(日) 00:11:310666デフォルトの名無しさん
2007/10/07(日) 00:12:09メールアドレスは?
0667デフォルトの名無しさん
2007/10/07(日) 00:33:520668デフォルトの名無しさん
2007/10/07(日) 00:54:22今のところその方法をとっていますが、ちょっと最近かっこつけたくなっちゃって・・
やっぱりそれが堅いかもしれないですね。
>>666
イイ!!…とも思いましたが、そうなると全く自分に関係のない会社の名前ついてしまいますしね。
ここで聞いて出ないということは、こういう場合のスタンダードってのは無いみたいですね。
今まで通り、ライブラリ名で始めることにします。
案出していただきありがとうございました。
0669デフォルトの名無しさん
2007/10/07(日) 00:59:07今は使えないんだっけか? まぁ、パッケージ名が長くなっちゃうけど。
0670デフォルトの名無しさん
2007/10/07(日) 03:40:22公開しないのであれば com.example.dan.sos.haruhi.* とかでいいんじゃまいか。
0671デフォルトの名無しさん
2007/10/07(日) 05:02:39公開しないのなら、公開されたパッケージと一緒に使うことを考えて、
パッケージ名の最初の識別子がjavaやjavax、comやgovやカントリーコードでなければ何でもいいと思う。
0672デフォルトの名無しさん
2007/10/07(日) 05:10:13アンカー間違えた。
>>670じゃなくて>>668
0673デフォルトの名無しさん
2007/10/07(日) 10:31:250674デフォルトの名無しさん
2007/10/07(日) 10:45:30SQLとかのチューニングとかまで含めるのであれば、プログラマのためのSQLって本がいい
ただ、第3版が和訳されていないし、内容的にはちと古い
あとはオライリーのJDBCによるJavaデータベースプログラミングが定番?
触る程度であれば、J2EE関連の本に10ページ程度はあるだろうから、それで充分。
0675デフォルトの名無しさん
2007/10/07(日) 13:28:31「Javaゲームプログラミング」という本のサンプルのゲームを元にして、
自分なりに改造してみています。それで、あるキャラクターをアニメーシ
ョンさせると、コンパイル時は全く問題ないのに、実行時、途中まで順
調に進んでいても、何度実行しても同じところで下のようなメッセージが
コマンドプロンプトに繰り返し出てきます。
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsExcepti
3
at Sprite.paintScreen(Sprite.java:492)
at Game2D.update(Game2D.java:411)
at sun.awt.RepaintArea.updateComponent(Unknown Source)
at sun.awt.RepaintArea.paint(Unknown Source)
at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
0676デフォルトの名無しさん
2007/10/07(日) 13:31:06下は問題のソースです。Enemy1はアニメーションさせても正常に進行しますが
Enemy2をアニメーションさせるとアニメーション自体は正常に表示されますが、途中でエラーが出ます。
/** 下方に流れ体当りする敵物体を表すEnemy1クラス */
class Enemy1 extends GameObject {
int count = 0;
public Enemy1(int plnNo, Sprite sprite, Queue keyQ, int x, int y,
GameObjects gos, int targetPlnNo) {
super(plnNo, sprite, keyQ, x, y, gos, targetPlnNo);
attribute = ENEMY;
sprite.setPlaneGrp(plnNo, 1, 12);
sprite.setPlaneGrp(plnNo, 2, 12);
sprite.setPlaneGrp(plnNo, 3, 13);
sprite.setPlaneAnime(plnNo, true);
sprite.setPlanePos(plnNo, x, y);
hitX = hitY = 8;
hitW = hitH = 16;
scorePoint = 10;
}
public void move() {
(中略)
}
public void beDestroyed() {
(中略)
}
}
0677デフォルトの名無しさん
2007/10/07(日) 13:32:08class Enemy2 extends GameObject {
int count = 0;
int direction;
public Enemy2(int plnNo, Sprite sprite, Queue keyQ, int x, int y,
GameObjects gos, int targetPlnNo) {
super(plnNo, sprite, keyQ, x, y, gos, targetPlnNo);
attribute = ENEMY;
sprite.setPlaneGrp(plnNo, 0, 14);
sprite.setPlanePos(plnNo, x,y);
scorePoint = 20;
hitX = hitY = 8;
hitW = hitH = 16;
if(x > 134)
direction = -2;
else
direction = 2;
}
public void move() {
(中略)
}
public void beDestroyed() {
(中略)
}
}
説明不足な点があるかもしれませんが、宜しくお願いします。
0678デフォルトの名無しさん
2007/10/07(日) 13:49:21ArrayIndexOutOfBoundsException
at Sprite.paintScreen(Sprite.java:492)
って出てるんだから、Sprite.java の 492 行目あたりで配列インデックスが境界超えてないか調べればいい
0679デフォルトの名無しさん
2007/10/07(日) 15:41:23ライブラリとして配布する場合だけでいいと思う>名前が重複しないようにとかこだわるの。
最終的なアプリケーションとなるものなら、他とパッケージ名が重複することはないので、
俺はappってパッケージ名にしてる。
ただし、別のプロジェクトで使い回しそうなコードは、
ドメイン名使ったパッケージにいれてるけどね。
0680デフォルトの名無しさん
2007/10/07(日) 16:26:14気にせず適当に作っちゃえ
0681デフォルトの名無しさん
2007/10/07(日) 16:35:55どのようにCTRL+Vを通知してやればいいか分かりません。
たぶんActionMapとかを使うと思うのですが、
どのように記述すればいいですか?
0682デフォルトの名無しさん
2007/10/07(日) 18:48:19Swingコンポーネント上でテキストのクリップボードへの転送するだけならActionとかActionMap周りだけでTransferHandlerはいらないはずだけど。
0683デフォルトの名無しさん
2007/10/07(日) 19:27:42ファイルのリストを転送していろいろしたい。D&Dもしたいし(これはできた)からTransferHandlerを使ってます。
0684デフォルトの名無しさん
2007/10/07(日) 19:44:54あとでremoveItemなどで特定のNodeの情報を消したりしたいんですが
よくわかりません。
Member.txtは
101,太郎
102,次郎
99,三郎
のように書き込まれて、removeItemで次郎を消すと
101,太郎
99,三郎
になるような感じです。
わかりにくいかもしれないけど、よろしくお願いします。
0685デフォルトの名無しさん
2007/10/07(日) 19:49:15何をよろしくお願いなのかわからんw
その仕様のプログラム作ってくれって事なのか?
0686デフォルトの名無しさん
2007/10/07(日) 20:02:54今一番知りたいのはlinkedlistの情報のファイルへの書き込み方法です。
File f = new File("Member.txt");
で作って
ID, 名前をStringにしてwriteで書き込みしようとしたりしてるんだけど
そうすると書き込むだけで消せないんです。
言い忘れたけど、消すときはIDをキーにしたいです。
0687デフォルトの名無しさん
2007/10/07(日) 20:58:450688デフォルトの名無しさん
2007/10/07(日) 21:01:23クラスを継承して自前のを用意するのが一番いいと思う。
0690デフォルトの名無しさん
2007/10/07(日) 23:29:51がんばってね^^
0691デフォルトの名無しさん
2007/10/08(月) 00:23:23じゃあ、基本的な部分だからjavadocとsunのチュートリアルの通りにすればいい。
0692デフォルトの名無しさん
2007/10/08(月) 00:39:59今チュートリアルにあることに気が付いて読んでるけど、
日本語訳ないし、サンプルがけっこう複雑だなって…
0693デフォルトの名無しさん
2007/10/08(月) 01:33:54TransferHandlerは低レベルな部分を全部ラップして
フレーバーとハンドラ実装すれば良いだけだから半端無く楽になってるよ。
java.awt.dndで低レベルな部分いじってTransferHandlerでは出来ないか逆に面倒なこと実装するか。
TransferHandlerで超楽して単純な実装するかで使い分ければ良い。
0694デフォルトの名無しさん
2007/10/08(月) 01:40:33ばかなのでここまでしかできません・・・だれかどうすればいいのか教えてください。
0695デフォルトの名無しさん
2007/10/08(月) 09:23:010696デフォルトの名無しさん
2007/10/08(月) 12:24:510697デフォルトの名無しさん
2007/10/08(月) 12:32:13_ゝ -''` ー- _
/ \
/ ヽ 、′ 、 ’、 ′ ’ ; 、
,':.. ', . ’ ’、 ′ ’ . ・
!:::::. , -────── 、 | 、′・. ’ ; ’、 ’、′‘ .・”
|:::::::. | `ィェァ `ィェァ| | ’、′・ ’、.・”; ” ’、
|::::::::.. `───────' | ’、′ ’、 (;;ノ;; (′‘ ・. ’、′”;
.|:::::::::::.. | ’、′・ ( (´;^`⌒)∴⌒`.・ ” ; ’、′・
|::::::::::::::.. l 、 ’、 ’・ 、´⌒,;y'⌒((´;;;;;ノ、"'人 ヽ
l:::::::::::::::::.... / 、(⌒ ;;;:;´'从 ;' ;:;;) ;⌒ ;; :) )、 ヽ
|:::::..ヽ:::::::::::.... / ( ´;`ヾ,;⌒)´ 从⌒ ;) `⌒ )⌒:`.・ ヽ
|:::::::....` 、:::::::::.. / ′‘: ;゜+° ′、:::::. ::: ´⌒(,ゞ、⌒) ;;:::)::ノ
}::::::::::::::::...`ヽ_人,ノ{ `:::、 ノ ...;:;_) ...::ノ ソ ...::ノ
 ̄:::::::::::::::.:::::::::::::::::::..  ̄ ー- _
::::::::::::::::::::::::::::::::::::::::::::::::.... \
0698デフォルトの名無しさん
2007/10/08(月) 16:47:54コピーしてきたら動きません。
正しいプロジェクトの移行方法を教えてください。
0699デフォルトの名無しさん
2007/10/08(月) 17:03:49Eclipseスレで聞け。
0700デフォルトの名無しさん
2007/10/08(月) 17:10:19すんません。了解しました。
0701デフォルトの名無しさん
2007/10/08(月) 19:13:01java.sql.Timestamp型の値をStringに変換するにはどうすれば良いのでしょうか?
0702デフォルトの名無しさん
2007/10/08(月) 19:30:40Stringならなんでもいいのか?
それならば、toStringで適当な文字列になる。
一般的には、getTime()で基準時からのミリ秒を取得してjava.util.Date に渡す。
後はSimpleDateFormatなりで変換する
0703デフォルトの名無しさん
2007/10/08(月) 19:32:46ダウンロードは出来るのですが、Java_ee_sdk-5_03-windowsをインストールしようとすると、
「Java_ee_sdk-5_03-windows が原因で MSVCRT.DLL にエラーが発生しました」
というエラーメッセージが出てインストールが中止してしまいます。
OSをupdateしたり他のバージョンのJ2EEをインストールしたりしてみたのですが解決出来ませんでした。
PCはノートのWindows Meです。
他にJ2EEをインストール出来る方法はないでしょうか?
0704デフォルトの名無しさん
2007/10/08(月) 19:54:56J2EE on ME
http://mail2.nara-edu.ac.jp/~asait/java/j2ee/j2ee_modified.htm
上の方法でもできる可能性はあるが、
本当にそのPCで使いたいのなら、2kかXPに切り替えた方がいいぞ。
0705デフォルトの名無しさん
2007/10/08(月) 20:14:10PC板でもないので詳しくは書かないけど、開発環境+ネット+メール程度で利用するならばいっその事Linuxいれちゃえば?
0706デフォルトの名無しさん
2007/10/08(月) 20:32:09どのExceptionを使えばいいんでしょうか?
あと、IDが数字じゃないときには何を使えばいいんでしょうか?
教えてください。
0707デフォルトの名無しさん
2007/10/08(月) 20:33:57IDが数字じゃないときにはどのExceptionを使えばいいんでしょうか?
でした。
日本語変ですみません。
0708703
2007/10/08(月) 20:39:30>>705
自分だけが使うPCではないのでOSを入れ替えるのは難しいです。
教えて頂いたアドレスの方法に挑戦してみます。
ありがとうございました
0709デフォルトの名無しさん
2007/10/08(月) 20:43:37自分で 「同じIDのファイルを作ろうとした例外」 クラスや 「IDが数字じゃない例外」 クラスを作ればいい
0710デフォルトの名無しさん
2007/10/08(月) 21:21:37開発用のマシンでMeって終わっているがな
0711デフォルトの名無しさん
2007/10/08(月) 21:28:30ありがとうございます
0712デフォルトの名無しさん
2007/10/08(月) 21:32:36情報のIDで選んで消すことってできますか?
0713デフォルトの名無しさん
2007/10/08(月) 21:55:23情報のIDで消す事はそのように実装すればできる
まずは入門本でも読んでこい
0714デフォルトの名無しさん
2007/10/09(火) 00:08:04なんであんな便利なのに入門書とかに載ってないんだ?
0715デフォルトの名無しさん
2007/10/09(火) 00:09:260716デフォルトの名無しさん
2007/10/09(火) 10:13:35今のところ公式なXmlライブラリがw3c以外にないってのがまずおかしい。
0717デフォルトの名無しさん
2007/10/09(火) 11:04:070718デフォルトの名無しさん
2007/10/09(火) 12:23:320719716
2007/10/09(火) 12:28:19>>577のいってるように、ライブラリはたくさんあるよ?
でも、これだけxmlが広がって、XmlEncoderとか標準ライブラリ内でも使ってるのに、
基本的な読み書きが、w3cでしかできないっていうのは不親切じゃないのかな、と思ったわけで。
実際自分もw3cで一通り書いてからJDOM知ったし。
0720デフォルトの名無しさん
2007/10/09(火) 13:06:30JavaAppletでエクスプローラからのファイルのドラッグ&ドロップでの
受け取りをしたいのですが、どこかにサンプルは無いでしょうか?
googleでいろいろ検索してみたのですがなかなか見つかりません。
もし御存知の方がおられましたらご教示くださいませ。
0721デフォルトの名無しさん
2007/10/09(火) 13:20:020722デフォルトの名無しさん
2007/10/09(火) 14:24:24エクスプローラからドラッグ&ドロップしたファイル名を受け取ることは出来ると思うが、
ファイル名を受け取ってもそのファイルは開けないから意味がない。
0723デフォルトの名無しさん
2007/10/09(火) 21:30:360724デフォルトの名無しさん
2007/10/09(火) 22:13:390725デフォルトの名無しさん
2007/10/10(水) 01:09:510726デフォルトの名無しさん
2007/10/11(木) 00:00:45jarのアイコンをダブルクリックしても全く反応しません。
コマンドから実行してみたら
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(Unknown Source)
at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
と表示され、動きませんでした。
画像ファイルが読み込めてない、ということなのでしょうか・・・?
いくら見直しても指定したファイルはちゃんとあるし、階層も、ファイル名も合ってました。
それともパスの指定とかいうものが必要なのでしょうか?
初心者丸出しの質問ですみません。
0727デフォルトの名無しさん
2007/10/11(木) 00:15:26jarの中のエントリはファイルじゃないので、ファイルとして読もうとしても読めない
画像をどこにおいてるのかその正確なところと、
その画像をどうやって読み込んでるかそのコードを示してみ
0728デフォルトの名無しさん
2007/10/11(木) 00:21:02画像ファイルの指定の仕方を間違えている。
リソースとして読み込んでいるかどうか確認汁。
また、jarの中に入れたファイルの読み込みに失敗する原因として、
名前の大文字小文字を間違えている可能性がある。
Windowsなどの大文字小文字の区別をつけないファイルシステムで動作しても、
jarの内部はその区別をつけるのでファイル名の確認はそこまで合っているかどうか見れ。
0729デフォルトの名無しさん
2007/10/11(木) 00:44:23フォルダ構成と画像のURLを取得している部分のソースを書け
0730デフォルトの名無しさん
2007/10/11(木) 01:09:02>>728
すみません、ファイル、エントリ、リソースとして読み込むのは
どう違うのかが具体的によくわかりません。
クラスファイルを置いている階層にフォルダを作り、その中にgifとpngを置いています。
名前の大文字小文字は、確認しましたが間違えていませんでした。
ソースはどの箇所を示せばいいのかいまひとつわからないんですが
String file = "images\\○○○.gif"
Toolkit.getDefaultToolkit().getImage(getClass().getResource(file)));
というような感じです
0731デフォルトの名無しさん
2007/10/11(木) 01:13:290732デフォルトの名無しさん
2007/10/11(木) 01:21:06実行できました!すごく単純なミスでしたね(´Д`;)
皆さんどうもありがとうございました。
0733デフォルトの名無しさん
2007/10/11(木) 04:19:140734デフォルトの名無しさん
2007/10/11(木) 07:30:55ミスとはちと違うな
誰でもはまる場所の1つだから、\\と/で何が異なるのかを学んでおかないと、同じような原因で何度もはまるぞ
0735デフォルトの名無しさん
2007/10/11(木) 08:23:58>>726じゃないが、是非教えてくれないか?
俺も一度はまった口なので、理由を教えてもらえると非常にありがたい。
0736デフォルトの名無しさん
2007/10/11(木) 08:49:30http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/ClassLoader.html#getResource(java.lang.String)
>リソースの名前は、「/」で区切られたパス名であり、これによってリソースが識別されます。
0737デフォルトの名無しさん
2007/10/11(木) 08:56:07そんなに難しいことか?
\\は(主に)Windowsのファイルシステムでのパス区切り
原則として使わずに、File.SEPARATOR を使用するべき。
/はURL(URI)で階層を表す時に使用する区切り文字
こっちは環境に依存せず、世界中何処でもどんなマシンでも/
これらを踏まえた上で、リソース等をファイルなどから指定する場合、
カレントディレクトリからのファイルの相対パス、またルートからの絶対パスでファイルとして指定するパターン。
リソース内での絶対パス、もしくはリソースのルートからの絶対パスでURLとして指定するパターンの2つがある。
で、はまる理由は意外と適当に書いても動くから。
730がはまったのは、jarにしない時はgetClass().getResource(file) でファイルとしてImageを取りに行った事。
これはjar に固める前では、当然クラスのある場所の構造と画像のある場所の構造がURL指定とファイル指定で一緒。
だけど、jarにしてしまったら、全部同じファイルの中にあるだろ?
そうなると、リソースとしてみないと階層をたどって画像ファイルにたどり着けない
0738デフォルトの名無しさん
2007/10/11(木) 08:58:37そうなんだけど、クラスローダーがリソースを見つける時に、ファイル区切りでも見つけちゃうわけ。
0739デフォルトの名無しさん
2007/10/11(木) 09:49:27http://www.tritonus.org/
http://www.javazoom.net/mp3spi/mp3spi.html
http://code.compartmental.net/tools/minim
この辺使うとできるかも。
試してはいない。
Java用encode-Libとかもある感じ。
0740デフォルトの名無しさん
2007/10/11(木) 13:31:44import javazoom.jl.player.advanced.jlap;
public class HelloMp3 {
public static void main(String args[]) {
if (args.length != 1) System.exit(1);
String filename = args[0];
System.out.println(filename);
try {
jlap j = new jlap();
j.play(filename);
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("うんこ\n");
}
0741デフォルトの名無しさん
2007/10/11(木) 14:40:59-Xmxオプション付けない場合ってメモリどれぐらい使えますか?
64MBでしょうか?
JRE/JDKのバージョンによって変わったりするのでしょうか?
情報のポインタ知ってる方教えてください。
0742デフォルトの名無しさん
2007/10/11(木) 14:56:45public static void main(String args[]){
Data Suzuki=new Data("Suzuki",90);
System.out.println("Suzuki="+Suzuki.getData());
}
}
class Data{
private String name;private int grade;
public Data(String name, int grade){
this.name=name;
this.grade=grade;
}
public int getData(){
return grade;
}
}
このjavaプログラムに関する問題が出題されたのですが、javaはまったくやった
ことなく、どうしていいものか悩んでます。
文が長すぎるので問題は下に書きます。
0743デフォルトの名無しさん
2007/10/11(木) 14:57:491:このプログラムのメソッドgetData()のアクセス修飾子publicを修飾子staticに
変えてコンパイル、実行してみよ。エラーがでるので修正したプログラムを作りなさい。
2:このプログラムにはthisキーワードが2箇所使われている。これらのキーワードを使わずに
同じ実行結果が得られるように、プログラムを修正しなさい。
3:このプログラムで、int grade(評点)はclass Dataのコンストラクタの2番目の引数
を、例えば90から85に変えることによって任意に変更できるが、最初の引数"Suzuki”を"Kimura"
に変えても結果はSuzuki=85のようになり、Kimura=85とはならない。
名前と評点を自由に出力できるように、このプログラムを修正せよ。
修正前の分には、先頭に//を付してコメント文とせよ。また、修正、付加した文
には、語尾に//修正//,//付加のコメント文を付けよ。
(修正および付加する箇所)
・ Data Suzuki=new Data("Suzuki",90); →
Data data=new Data("各自の学籍番号",希望の点数);
・ System.out.println("Suzuki="+Suzuki.getData()); →
System.out.println("修正せよ+data.getData());
・ getData()→getGrade()
・ getGrade()を参考にして、メソッドgetName()を新しく付け加える。
よろしくお願い致します。
0744デフォルトの名無しさん
2007/10/11(木) 15:00:41教えたこともないのにそんな問題出すんじゃねえ、この給料泥棒が!
と言ってやれ。
または、宿題は宿題スレへ。
0745デフォルトの名無しさん
2007/10/11(木) 15:01:20http://java.sun.com/javase/ja/6/docs/ja/technotes/tools/windows/java.html
デフォルト値は、実行時にシステムの設定に基づいて選択されます。
0746デフォルトの名無しさん
2007/10/11(木) 15:03:12スレ違いすみません
0747デフォルトの名無しさん
2007/10/11(木) 17:00:02ありがとうございます。
しかし、「デフォルト値は、実行時にシステムの設定に基づいて選択されます。」は、
-serverを付けた時の挙動だと思います。
今回は、appletですので、おそらく-clientがついた状態になっていると思います。
この場合はやはり64MBでしょうか?
自分でググったかぎりは、64MBなのかなぁという感じです。
明確な情報がありましたら、是非・・・。
0748デフォルトの名無しさん
2007/10/11(木) 17:56:02http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/vm/gc-ergonomics.html
0749デフォルトの名無しさん
2007/10/11(木) 21:39:140750デフォルトの名無しさん
2007/10/12(金) 00:32:16(Windowsの場合) C:\Documents and Settings\(user)\.java.policy に
grant codeBase "file:/*" {
permission java.util.PropertyPermission "user.home", "read";
};
と書けばいいと思って試してみましたが、書く前と変わらず
java.security.AccessControlException: access denied
(java.util.PropertyPermission user.home read)
が出ます。どこが間違っているのでしょうか・・・
0751デフォルトの名無しさん
2007/10/12(金) 00:43:39>変えてコンパイル、実行してみよ。エラーがでるので修正したプログラムを作りなさい。
頭の悪い問題だな。
自分でpublicをstatic変更しといておかしくなったならpublicに戻せば良いじゃないか。
言いたいことは分かるが国語力なさ過ぎだ。
0752デフォルトの名無しさん
2007/10/12(金) 01:00:200753デフォルトの名無しさん
2007/10/12(金) 01:30:14<object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" width="300" height="100">
<param name="code" value="hoge.HogeApplet" />
</object>
と書いたら動きました。
解決したので一応報告。
0754デフォルトの名無しさん
2007/10/12(金) 01:53:17今年のお正月の話?ぼんやり覚えてる。懐かしいな。
要はwin2000ではappletタグでなくきちんとobjectタグにしなさいってことかな?
0755750
2007/10/12(金) 02:02:14ブラウザ再起動で反映されました。申し訳ない。
0756デフォルトの名無しさん
2007/10/12(金) 04:04:56講師の方ですか?
0757デフォルトの名無しさん
2007/10/12(金) 05:02:520758デフォルトの名無しさん
2007/10/12(金) 07:30:24キャラの重ね合わせ制御の方法が解りません。
JLabelを使ってキャラを表示させています。
で、あるキャラとあるキャラが重ねあった場合、
特定のキャラを必ず上に表示させたいのですが・・・その方法がわかりません。
誰かご存じないでしょうか?
0759758
2007/10/12(金) 08:06:06コンテナにJLabelをaddする際にインデックス0を指定するだけでした。
失礼しました。
0760デフォルトの名無しさん
2007/10/12(金) 08:14:16解決したようだけど、JLabelでいわゆるスプライトを行うのは限界があるよ。
スプライトは結構簡単に実装できるので、ゲームに興味あるならば勉強するべし。
「15歳からはじめるJAVAわくわくゲームプログラミング教室」がオススメ
名前はあれだけど、入門本スレでも評価が高い
0761デフォルトの名無しさん
2007/10/12(金) 13:36:23javaでGUIを作るとなるとswingを使うことになるのでしょうか?
ネットで調べてみるとswingは廃れていく技術のように書かれてるのが多かったので気になりました。
経験多いプログラマーの方がカレンダーを作るとしたらどんな技術を選んで作りますか?
0762デフォルトの名無しさん
2007/10/12(金) 14:21:50ソースを下さい。
廃れているのは、SWTとかかれていませんか?
Swingは、むしろ最近力を入れて改良されている部分です。
0763デフォルトの名無しさん
2007/10/12(金) 14:34:31SWT、Swing、AWT、applet、ここら辺の違いは何なんだろう
0764デフォルトの名無しさん
2007/10/12(金) 14:49:10あれでSwing使えねーと思うなら使えない。
0765デフォルトの名無しさん
2007/10/12(金) 15:38:54うるおぼえ(<-なぜか変換できない)だが、
SWT Windowsに特化したGUI。早いがWindows以外では使えない。Eclipseでも使用
Swing もっとも一般的。どのOSでも一応動く。
AWT Swingの一層下。細かくいじれるが、扱いづらい。初心者は大人しくSwingへ。
applet ウェブブラウザ上でJavaを使えるようにする技術。その性質上リソースが著しく制限される。
って感じだと思う。適当に書いてることなので、間違ってたら訂正よろしく。
0766デフォルトの名無しさん
2007/10/12(金) 15:46:46Swingが余裕で実践に使えることはV2C(2ちゃんねるブラウザ)で証明されている
0767デフォルトの名無しさん
2007/10/12(金) 15:58:58SWTだけど、今はJavaも結構早くなってるからそんなにメリットはないかも。
昔は極端に遅かったからでC言語で仕事させたほうが速かったんだけど。
AWTはフレームに入る入れ子要素(パネルとかボタンとか)までOSに委譲している
Swingでは中身はSwing側で書いてるだけ
よってSwingのほうが軽量(LightWeight)といわれている
一部分使いまわしてるけどひとつ下の層というと語弊があるかな
あとアプレットの代替要素としてWebStartがあったり。
0768デフォルトの名無しさん
2007/10/12(金) 16:26:560769デフォルトの名無しさん
2007/10/12(金) 16:46:54イベントの処理の仕方も違うはずなのに
0770デフォルトの名無しさん
2007/10/12(金) 17:04:16積極的な理由として、webで解説するために、その場で動いた方がわかりやすい。
消極的な理由として、解説系のサイトでは主にロジック部分の解説が多いため、リソースの取得が必要でない場合が多い。
かな。
0771デフォルトの名無しさん
2007/10/12(金) 17:32:16ってことはこれも実践で十分いけるんでない?
0772デフォルトの名無しさん
2007/10/12(金) 17:58:09WebStartはできるぞ。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/javaws/jnlp/javax/jnlp/ExtendedService.html
0773デフォルトの名無しさん
2007/10/12(金) 18:24:14てか、Swingが廃れたってソースはITなんとかか?
eclipseとnetbeans両方使ってるが大した違いはないぞ。
まあ、netbeansはデフォルトのVM引数が控えめなので自分のPCに合わせる必要があるが。
むしろ、SWT開発はめんどい。
javaとSwingがまともになった今、JNI使う意味は低レベルな部分触るときくらいしかない。
java.dev.netのgame.coreプロジェクトが良い例。
なんでまともに使いもせず定期的にJNIとpure java絡みの話が上がるのかが不思議だ。
Swing遅いって言う奴はだいたいSwingの作法間違えてるしな。
0774デフォルトの名無しさん
2007/10/12(金) 18:28:16普通に左中括弧書くと、プレースホルダの開始だと認識されてMessageFormatクラスで例外が出てしまいました。
JavaDoc読んだらシングルクォートで囲えばよさそうに見えたのでやってみたけどダメでした。
ダメ元でバックスラッシュも試しましたがダメでした。
何かうまい方法あったら教えて下さいm(__)m
0775デフォルトの名無しさん
2007/10/12(金) 18:38:16Wiiコンの入力を読んでみた時にはJNI使ったんだけど、pure javaで書けるのかな。
>>773
イベントディスパッチスレッドがうんちゃかって話ならTiming Frameworkで解決しそうな気がする
いやよく知らないんだけど
0776デフォルトの名無しさん
2007/10/12(金) 18:39:020777デフォルトの名無しさん
2007/10/12(金) 23:06:04やっぱ、サーバが Java だからですか?
だとしたらサーバに Java はやめといた方がいいですかね。
素直に Apache で PHP でも動かした方が無難ですか?
0778デフォルトの名無しさん
2007/10/12(金) 23:36:14新しくウィンドウを表示したいのですがどうすれば良いでしょうか。
0779デフォルトの名無しさん
2007/10/12(金) 23:42:05重くないけど?
0780デフォルトの名無しさん
2007/10/12(金) 23:57:04あなたにとっては、アレが当たり前なんでしょうね。
0781デフォルトの名無しさん
2007/10/13(土) 00:04:18ダイアルアップじゃ大変だね
N88Basicでもやるといいよ
0782デフォルトの名無しさん
2007/10/13(土) 00:16:31Component#setLocation(int,int)
0784デフォルトの名無しさん
2007/10/13(土) 01:04:01君は応用も出来ないバカですか?
今あるウィンドウの位置を増分としてsetLocationを使えばいいくらい分かりそうなものを
0785778
2007/10/13(土) 01:18:16ごめんなさい。
質問する前にそれは調べました。
けれど、見つからなかったのです。
今思えば>>778ではそちらを質問したほうが良かったのかもしれません。
お手間を取らせて、すみませんでした。
どなたかウィンドウの位置を知る方法を教えてもらえませんか?
0786デフォルトの名無しさん
2007/10/13(土) 01:25:59設定したいフレーム.setLocation(基準フレーム.getX() + 100, 基準フレーム.getY() + 100);
0787デフォルトの名無しさん
2007/10/13(土) 01:30:25setLocationRelativeTo(親)
が楽でいいけどなー
0789デフォルトの名無しさん
2007/10/13(土) 01:41:36まあsetLocationRelativeToの方が楽だとは思うけど要求が(+100,+100)だったので
>>788
FrameとかJFrameのリファレンスしか見てないんじゃないのか?
getXやgetYはその親クラスのComponentで定義されているメソッド
〜から継承されたメソッドとかのリストも見てそれっぽいのを探すこともやった方がいい
0790778
2007/10/13(土) 01:56:53>>789
まったく見当外れのGraphicsConfigurationという場所を見ていました。
灯台下暗しですね。
これからは継承されたメソッドも詳しく見て行こうと思います。
それでは。
0791デフォルトの名無しさん
2007/10/13(土) 02:08:21特に継承やインターフェイスを理解してないと結構つらい物がある。
逆に理解してれば、あれほど簡潔でわかりやすいものもないと思うんだが(言い過ぎ?
0792デフォルトの名無しさん
2007/10/13(土) 02:54:460793デフォルトの名無しさん
2007/10/13(土) 03:05:30>Wiiコンの入力を読んでみた時にはJNI使ったんだけど、pure javaで書けるのかな。
>JNI使う意味は低レベルな部分触るときくらいしかない。
javadoc嫁以下だな。
0794デフォルトの名無しさん
2007/10/13(土) 03:18:40kwsk
0795デフォルトの名無しさん
2007/10/13(土) 05:19:36を表示させるプログラムの課題が出ているのですが
getRGB()の使い方がよくわかりません。
どうやって特定の色の値を計算するのでしょうか?
0796デフォルトの名無しさん
2007/10/13(土) 11:37:310797デフォルトの名無しさん
2007/10/13(土) 11:41:110798デフォルトの名無しさん
2007/10/13(土) 11:52:010799デフォルトの名無しさん
2007/10/13(土) 11:55:36目的がある事も多いのであまりおすすめしない
0800デフォルトの名無しさん
2007/10/13(土) 11:59:27>>795がjava.awt.Color#getRGBのことを言ってるのならね
java.awt.image.BufferedImage#getRGBのことならBufferedImageにgetRedの類は無いから
もしgetRed等を使うのならnew Color(bufferedImage.getRGB(...)).getRed()とかしないと
てか、もしかして>>796の個々のビットフィールドの取り出し方が分からないとか
0801デフォルトの名無しさん
2007/10/13(土) 13:29:55まさしくそうです…
0802デフォルトの名無しさん
2007/10/13(土) 13:37:050803デフォルトの名無しさん
2007/10/13(土) 13:44:41そういうのはC向き。たぶん出題者もCでやることを前提で問題出したんじゃないの?
0804デフォルトの名無しさん
2007/10/13(土) 13:55:250805デフォルトの名無しさん
2007/10/13(土) 14:30:290806デフォルトの名無しさん
2007/10/13(土) 14:33:260807デフォルトの名無しさん
2007/10/13(土) 14:34:010808デフォルトの名無しさん
2007/10/13(土) 14:36:47ネットからダウンロードしたjavaで作られたプログラムを使うときってアイコンをダブルクリックとかで動きますよね。
前者の状態から後者の状態にするにはどうすればいいんでしょうか?
0809デフォルトの名無しさん
2007/10/13(土) 14:41:38たぶんJarファイルのことをいってるんだろう。
俺はEclipse使ってるので、エクスポートからしてるが、コマンドラインでもできるはず。
0810デフォルトの名無しさん
2007/10/13(土) 16:43:090811デフォルトの名無しさん
2007/10/13(土) 16:43:480812デフォルトの名無しさん
2007/10/13(土) 18:57:23アイコンをダブルクリックとかで動くやつを実行可能jarという。
jarのヘルプだけでは実行可能jarの作り方は分からないと思うので、
sunサイトのドキュメントを参照したり、実行可能jarでぐぐったりするといい。
0813デフォルトの名無しさん
2007/10/13(土) 19:06:55このサイトにあるex.3の結果をコンソール上にではなく、実機で表示されるようにするには、どう変えたらいいでしょうか。
0814808
2007/10/13(土) 19:23:50>>810
>>811
>>812
なるほど、単なるクラスファイルとは別にプログラムを実行するためのファイルってのがあるんですね。
jarファイルでググってやってみます。ありがとうございました
0815デフォルトの名無しさん
2007/10/13(土) 20:19:32javaだと型昇格して全部intになっちゃう・・・って先を超されたか。
0816デフォルトの名無しさん
2007/10/13(土) 21:14:37マルチするな
0817デフォルトの名無しさん
2007/10/14(日) 02:01:40oos.writeObject()で書き込んだデータをネットワーク経由で受信し、
ois.readObject()を実行した場合に、オブジェクトデータであれば問題はないのですが、
オブジェクトデータ以外(バイナリ配列)であった場合にも、Exceptionをキャッチした後バイナリ配列として読み取りたいと考えています。
しかしoisのストリームのポジションを戻すことができず、困っています。
oisでreadObject実行前に全てを一度バイト配列として読み取って退避させ、
再度バイナリ配列からoos→oisという具合に復元させる方法も考えたのですが上手くいきませんでした。
データを再送信させる以外の方法ってありますか?
ご存知の方いらっしゃいましたらお願い致します。
0818デフォルトの名無しさん
2007/10/14(日) 02:05:54重複チェックのロジックとか、あるデータのキー値が
他のファイルに存在してるとか、
ファイルIOと読み込んだCSVデータに関するロジックを
知りたいです。
0819デフォルトの名無しさん
2007/10/14(日) 02:09:52>再度バイナリ配列からoos→oisという具合に復元させる方法も考えたのですが上手くいきませんでした。
その考え方でいけるはずだが、やり方が悪いんじゃないか
復元するのに oos が入ってるのはなぜ?
コードみせてみ
0820デフォルトの名無しさん
2007/10/14(日) 02:10:29初心者なんですが、コマンドプロンプトのc:\Dcument and Settings\(ユーザ名)にあるディレクトリって、どこのことですか?
0821デフォルトの名無しさん
2007/10/14(日) 02:13:25エクスプローラでも辿れるでしょ。
何がわからんの?
0822デフォルトの名無しさん
2007/10/14(日) 02:18:17あとは、java.ioかjavax.nioのjavadoc読む。
0823820
2007/10/14(日) 02:24:10それでマウスで(?)それを作って、で、消した(ゴミ箱からも)んですけど、
コマンドプロンプトでもう一度作ろうとしたら、もうあるって出たので……
で、一体どこにあるんだろう?と思って人に聞いてみたら、c:\Dcument and Settings\(ユーザ名)だと言われ、
なんのことだろうと思って来た次第です。。
0824820
2007/10/14(日) 02:24:59初心者発言ばかりで恐縮ですが、コマンドプロンプトっていうのは、絵じゃなくて文字でPCを動かすものですよね?
てことは、目に見えるどっかに「java」がつくられているんでしょうか??
0825デフォルトの名無しさん
2007/10/14(日) 02:26:41マイコンピュータ → (C:) → Documents and Settings → ユーザ名 と辿っていけ
というか、Windows の基本をまず勉強した方がいい
0826デフォルトの名無しさん
2007/10/14(日) 02:28:53C:\Users\<ユーザー名>はある?
windows板行って来い。
>>821
今の時期だとvistaってオチだろ。
c:\Documents and Settings\ユーザ名は下位互換のためのソフトリンクだから。
0827820
2007/10/14(日) 02:31:13プログラム学ぶ上でそうしたいとは思ったのですが、図書館に行っても「パソコン基本入門〜おじいちゃんでもできる!メールの方法〜」とかしかなく……
独学ってのは案外いやなところでつまずく;
ありがとうございました
0828820
2007/10/14(日) 02:37:37次からはそこに聞いたほうがよさそうですね
了解です
0829デフォルトの名無しさん
2007/10/14(日) 02:40:49length()もsize()も使えないYO!
0830817
2007/10/14(日) 02:41:03復元するのにoosを入れたのはバイト配列にする際に先頭4バイトのマジックナンバーなどが抜け落ちていたためです。
(oosを介しても同様でしたが・・・)
import java.io.ObjectOutputStream;
import java.util.*;
import java.io.*;
public class Test2 {
protected static final int BUFF = 512;
public static void main(String args[]){
Hashtable hash = new Hashtable();
try{
ByteArrayOutputStream baos = new ByteArrayOutputStream(BUFF);
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(hash);
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
byte[] b = new byte[baos.toByteArray().length];
//ここで情報が抜け落ちる
bais.read(b);
System.out.println();
}catch(Exception e){
e.printStackTrace();
}
}
}
0831デフォルトの名無しさん
2007/10/14(日) 02:45:23.length
括弧いらない
0832デフォルトの名無しさん
2007/10/14(日) 02:45:35String配列だろうがint配列だろうが配列は配列
lengthしかないのは分かりきってるじゃないか
0833デフォルトの名無しさん
2007/10/14(日) 02:54:10bais.read する必要なんかなくて、baos.toByteArray() をそのまま使えばバイナリ配列になってるんじゃないの?
0834デフォルトの名無しさん
2007/10/14(日) 02:54:53>>832
ありがとう!!
()いらないなんて想定の範囲外だった。
ホンマにありがとうやでー
0835デフォルトの名無しさん
2007/10/14(日) 03:16:52アプリケーションプログラミングから入ると最初に出会う配列ってString配列なんだなw
0836デフォルトの名無しさん
2007/10/14(日) 03:44:22いやこれは簡素化したもので、baosやoosはネットワークの向こう側で見えない。
0837デフォルトの名無しさん
2007/10/14(日) 04:00:52それそのままでいいじゃん。
0838デフォルトの名無しさん
2007/10/14(日) 17:55:41このサイトの
if (c >= '0' && c <= '9') {
sb.setCharAt(i, (char)(c - '0' + '0'));
って部分なんですがどうしてc - '0' + '0'としか書いてないのに0以外の数も変換されるんですか?
0839デフォルトの名無しさん
2007/10/14(日) 18:01:25まず、ある全角数字の相対コード(変な言い方ですが・・)を計算(c - '0')し
その後絶対的な位置として( + '0')をしてやる。
こんな感じっしょー
0840デフォルトの名無しさん
2007/10/14(日) 18:02:00ごめんなさい。恥ずかしい。。
0841デフォルトの名無しさん
2007/10/14(日) 18:03:060が変換されるのがわかればわかるんじゃね
0842デフォルトの名無しさん
2007/10/14(日) 19:14:150843デフォルトの名無しさん
2007/10/14(日) 19:27:45前提として、文字コードでは0〜9が連続して並んでいる
全角0〜9も同様
>if (c >= '0' && c <= '9') {
これで対象が全角数字の場合に限定している
>c - '0'
これで、文字コードから一桁数値に変換する。
'0'-'0'==0
'1'-'0'==1
...
'9'-'0'==9
>c - '0' + '0'
数値に変換した物に'0'を足すことにより、半角数値となる。
0+'0'=='0'
1+'0'=='1'
...
9+'0'=='9'
0844デフォルトの名無しさん
2007/10/14(日) 19:31:05そこら辺が分からないのかな。
0845デフォルトの名無しさん
2007/10/14(日) 19:35:290846デフォルトの名無しさん
2007/10/14(日) 19:35:450847デフォルトの名無しさん
2007/10/14(日) 20:44:52どうやってしればいいのでしょうか?
また、GCのチューニング方法が載ってるサイトや本はないでしょうか?
今、eclipse、Java4、Tomcat、strutsで開発しています。
0848デフォルトの名無しさん
2007/10/14(日) 20:52:020849デフォルトの名無しさん
2007/10/14(日) 20:56:31それかプロファイラのようなものでも監視できる奴が無いわけでもない。
0850デフォルトの名無しさん
2007/10/14(日) 21:00:33ありがとうございます。
すみませんが、javaコマンドのVM引数ってどうやって読むんですか?
監視できるツールは普段はjrocketを使ってるんですけど、SunのJavaではやりかたがわからなかったんです。
0851デフォルトの名無しさん
2007/10/14(日) 21:12:42なんで今、サポートが切れる直前の1.4で開発しているのかは知らんけど、5.0以降ならJDKに付属しているJConsoleってツールを使えば簡単にモニタリングできる。
0852デフォルトの名無しさん
2007/10/14(日) 21:20:17jrocketワロタw
0853デフォルトの名無しさん
2007/10/14(日) 21:24:270854デフォルトの名無しさん
2007/10/14(日) 21:34:020855デフォルトの名無しさん
2007/10/14(日) 21:50:57jrockitは1.4.1ベースなのでEOF期間終了してる。EOF期間中なのは1.4.2。
というか現実問題java7が出たらjava5.0がEOF突入するのに日本じゃまだ1.4.2ベースなんだよな。
5,6で最適化が全然違うんだが・・・。
0856デフォルトの名無しさん
2007/10/14(日) 22:00:33世界最速をうたってたと思うけど
0857デフォルトの名無しさん
2007/10/14(日) 23:14:12でも開発側は使う使わないは別にしても最新の情報を追っかけてないと死んじゃうよ>>850
0858デフォルトの名無しさん
2007/10/14(日) 23:58:39Java6にするだけで速度がかなりあがりますよ、とプラス面を大きく言えば結構簡単に納得してくれるもんだよ
特に未だに1.4.2を使えといってくるところは、Javaは遅いという幻想を抱いているんでパフォーマンスをちらつかせると効果高い
0859デフォルトの名無しさん
2007/10/15(月) 00:05:211.4から1.6に更新したとき、パフォーマンスが三割以上上がってマジビビったわ。
0860デフォルトの名無しさん
2007/10/15(月) 01:59:04ただ、jrockitは最適化が速度重視で安定性重視じゃないしHotSpot技術とは別の最適化方法だから
serverモードでHotSpotが効いて来た頃のsun java6との総合性能でどういう違いがあるか気になる。
>>858
javaやswingが未だに重いとか言ってる連中は頭が1.3,1.4で止まってるからな。
あの頃とはSun HotSpot VMの実装が別物なのになぁ・・・。
今はCDCで普通にSwingが動く時代なのに。
>>859
5.0のクラスファイルをリコンパイルなしに6で
実行してSwingが明らかに早くなってたんだから1.4~6ならそりゃビビるわw
ただ、6は目に見えるバグが多いな。やっと直ってきたが。
問題はjdk6uNとjdk7か。
0861デフォルトの名無しさん
2007/10/15(月) 08:57:000862デフォルトの名無しさん
2007/10/15(月) 10:43:02少しはあるよ。
有名どころでは、文字列連結の+演算子の展開に
StringBufferを使ってたところをStringBuilderにしてたりとか
0863デフォルトの名無しさん
2007/10/15(月) 12:43:29何かいいアイデアがあったら教えてください。
0864デフォルトの名無しさん
2007/10/15(月) 12:55:51Apache Tomcat(4.1.34)を使っているのですが、server.xml の context要素の
子要素で
<Loader className="org.apache.catalina.loader.DevLoader" reloadable="true" debug="1"/>
というものがあるのですが、
このDevLoaderというクラスは何をするものなのでしょうか?
Google検索してみましたが、よくわかりません。
0865デフォルトの名無しさん
2007/10/15(月) 12:56:45ちょっと考えてみたけど、以外と浮かばないもんだなあ。
Javaの特性から考えると、OSや環境に依存するようなシステムより、JavaVMを生かしてOSの違いを無視できる、
ネットワークを活用したシステムなんかを作ってみたらおもしろいんじゃなかろうか。
・・・と、ここまで書いてなんだけど、スレ違いでわなかろうか?
0866デフォルトの名無しさん
2007/10/15(月) 14:16:34RSSリーダー兼スクリーンセーバー
0867デフォルトの名無しさん
2007/10/15(月) 15:18:46俺のアイデアメモから一つ出してあげる。
Skypeログを2ch鯖形式で見せるソフト。
Javaでなくても.NETとかでもSkypeAPIアクセスできるからJavaである必要はないけど。
これがあれば、2chブラウザでSkypeログが見られる。
0868デフォルトの名無しさん
2007/10/15(月) 17:02:51static void main(String[] args)
{
int k = 0; ← こっちが前?
for (int i = 0; i < 10; i++) {
k += i;
}
System.out.println("こたえ=" + k); ← こっちが前?
}
0869デフォルトの名無しさん
2007/10/15(月) 17:14:53パパかママに聞こうね
0870デフォルトの名無しさん
2007/10/15(月) 18:37:48ていう発想が理解できないのだけど、もう少し分かりやすくいってくれないか?
0871デフォルトの名無しさん
2007/10/15(月) 18:59:18日本語の不思議である。
筒井康隆だかの文でも見たような気がする。唯野教授だったかな?
まあ、定義は無いってコトだよね。文脈によって変わるから。
0872デフォルトの名無しさん
2007/10/15(月) 19:00:58なんだこいつwwww
0873デフォルトの名無しさん
2007/10/15(月) 19:02:41こっちを前にする方法(Java)はあるのか?
0874デフォルトの名無しさん
2007/10/15(月) 19:27:06アセンブラ
http://pc11.2ch.net/test/read.cgi/tech/1172916032/135
Java
http://pc11.2ch.net/test/read.cgi/tech/1190169553/873
0875デフォルトの名無しさん
2007/10/15(月) 19:30:06うしろ=backward
の意味の場合は System.out.println の方
まえ=before
あと=after
の意味の場合は int k = 0 の方
たぶん。
0876デフォルトの名無しさん
2007/10/15(月) 19:44:37前方参照ってどっち?
後方参照ってどっち?
0877デフォルトの名無しさん
2007/10/15(月) 20:22:48InterruptedException はキャッチして復元するのが定石?
そのままだと Future 使ったときに get 用にと食われて
スレッドの大元まで伝わらないんだけど
0878デフォルトの名無しさん
2007/10/15(月) 22:06:21アセンブラで言うところの前方参照は、ソースファイルの下の方へ飛ぶJUMP命令など。
下はまだアセンブルしてないので距離(バイト数)が確定してない。そのためJUMP命令の長さも確定できない。
JUMP命令の長さを大きく確保して、コードが確定してから余った部分をNOPを埋めたりする。
0879デフォルトの名無しさん
2007/10/15(月) 22:35:470880デフォルトの名無しさん
2007/10/15(月) 22:37:030881デフォルトの名無しさん
2007/10/15(月) 23:33:510882デフォルトの名無しさん
2007/10/16(火) 00:11:49どのようにして動いているのか分かったら自分で解けそうなので、こちらで質問させてください。
GVedctorクラスには、void mul(GVector v1, GMatrix m1) というメソッドが用意されているのですが、
自分で用意したベクトルv1と行列m1をこちらのメソッドに投げて、乗算した結果をコンソール画面に
出力させるにはどうすれば良いのでしょうか?
同じようにGMatrixクラスにも、void mul(GMatrix m1, GMatrix m2) というメソッドが用意されているのですが、
同じように自分で用意した行列m1とm2をこちらのメソッドに投げて、乗算した結果を出したいです。
0883デフォルトの名無しさん
2007/10/16(火) 00:29:22>void mul(GMatrix m1, GVector v1)
> Multiplies matrix m1 times Vector v1 and places the result into this vector (this = m1*v1).
>int getSize()
> Returns the number of elements in this vector.
>double getElement(int index)
> Retrieves the value at the specified index value of this vector.
試してないけど、このあたりでできんじゃない?
0884デフォルトの名無しさん
2007/10/16(火) 00:35:03激しくJava初心者なんで変なこと言ってたらすいません。
Javaで区分積分法を使って下の値を求めます。
関数x^2があり、その関数とx軸と区間[0,10]に囲まれたの面積Sの近似値を区間[0,10]を「5000分割」して求めます。
実際の面積Sは、普通に積分すれば求まります(S=∫[0,10]x^2 dt)がJavaで区分積分法のプログラムを作ることができません。
どなたかご教授ください。
0885デフォルトの名無しさん
2007/10/16(火) 00:38:44積分とはどういう意味かを理解していれば単純な長方形の面積の和となることくらい解るだろ?
後はfor文をつかって面積を足しこんでいけばいいだけ。
なにが解らないんだ
0886デフォルトの名無しさん
2007/10/16(火) 00:42:21激しくJava初心者というよりは激しく数値計算初心者じゃまいか?
0887882
2007/10/16(火) 00:42:51Javadocを読むと、このようなコンストラクタやメソッドが用意されている、
というのは分かるのですが、それを実際のプログラムに応用ができないのですorz
例えば、
double[] v1 = new double[3];
double[][] m1 = new double[3][3];
double[][] m2 = new double[3][3];
こういったメンバがある場合だと、どのようにメソッドを使えば、
乗算した結果が表示されるのでしょうか?
0888デフォルトの名無しさん
2007/10/16(火) 01:00:42double[][] m1 であるならば、行列M の要素M1[i, j] が各配列の要素に対応するんだよ
M1 + M2 であれば全ての要素を足せばいい。
forで二重ループつくって、m[i][j] = m1[i][j] + m2[i][j]
0889デフォルトの名無しさん
2007/10/16(火) 01:01:31プログラム初心者は入門本でも読んでからJava初心者を名乗るといいと思う
0890デフォルトの名無しさん
2007/10/16(火) 01:04:25GVector v=new GVector(3);
v.setElement(0, (int)(Math.random() * 9) + 1);
v.setElement(1, (int)(Math.random() * 9) + 1);
v.setElement(2, (int)(Math.random() * 9) + 1);
GMatrix mat1 = new GMatrix(3, 3);
mat1.setElement(0, 0, (int)(Math.random() * 9) + 1);
public static void printvector() {
System.out.println("ベクトルの値");
for (int i = 0; i < getSize(); i++) {
System.out.println(v.getElement(i));
}
}
>>888
そこまでは出来てるみたい。GVectorを使って同じ事をしろって宿題だそうよ
0891デフォルトの名無しさん
2007/10/16(火) 01:30:11もう宿題スレの方に完成例を投げてあげたらいいんじゃね?
0892デフォルトの名無しさん
2007/10/16(火) 01:33:30ecma-262だとまだ定義されてない関数を参照する事を後方参照と呼ぶから意味が逆だな。
実行時にソースコードの存在があるかないか無いかの違いか?
0893882
2007/10/16(火) 01:40:32ありがとうございます。
一応、単純にベクトルと行列を出力するコードは書いてみました。
実際にこれらを掛け算する場合は、どういったメソッドを書けば良いのでしょうか?
0894デフォルトの名無しさん
2007/10/16(火) 01:44:460895デフォルトの名無しさん
2007/10/16(火) 01:54:33どういう風に作っていけば良いですか?流れを教えてください。
よろしくお願いします。
0896882
2007/10/16(火) 01:54:36v.setElement(0,〜);
Syntax error on tokens, AnnotationName expected instead
v.getElement(i)
Cannot make a static reference to the non-static field v
0897882
2007/10/16(火) 02:31:200898デフォルトの名無しさん
2007/10/16(火) 02:44:260899デフォルトの名無しさん
2007/10/16(火) 02:44:330902デフォルトの名無しさん
2007/10/16(火) 03:52:130903デフォルトの名無しさん
2007/10/16(火) 04:03:46開発環境はWindowsXP、JRE,JDK共に1.6です。
URLConnectionにて、とあるサーバへHTTPS通信をするプログラムを書き、
そのクラスファイルをバッチファイルからstart javaw 〜により起動しています。
この時、サーバへの接続において、Javaコントロールパネルにて設定した接続方法を
使用してもらいたいのですが、どうもそれが無視されているようなのです。
具体的に言うと、プロキシサーバの設定が反映されずに、直接続されてしまいます。
ブラウザ内で動作するアプレットではコントロールパネルの設定が使われているようなので
スタンドアロンアプリでもその設定が使われると考えていたのですが、間違いでしょうか?
または、動作させるべきjavawが違うのでしょうか?
Windowsの環境パスではJDKのbinディレクトリが指定されていましたので、
細かにバージョンのあるJREディレクトリ中の最新バージョンのjavawでも試してみましたが
ダメのようでした。
解決方法、または些細なアドバイスでもいただけるとありがたいです。
よろしくお願いします。
0904882
2007/10/16(火) 04:34:39ありがとうございます。動作確認しました。
あちらの方にもお礼を書いておきます。
0905デフォルトの名無しさん
2007/10/16(火) 06:48:26>URLConnectionにて、とあるサーバへHTTPS通信をするプログラム
>Javaコントロールパネルにて設定した接続方法
この2つが関連していないだけじゃないのか?
コントロールパネルで設定できるプロキシ設定ってJREのアップデートとかに使用するだけで、プログラムの実行には影響がないと思う
あったとしたらどうやって解除するの?って話になるじゃん。
プロキシはプログラム内で明示的に指定しないと繋がらないと思われ。
0906903
2007/10/16(火) 08:29:34ご返事ありがとうございます。
Javaコントロールパネルの通信設定が関係していないのでは?
の件について、ローカルのプロキシを立てて実験してみましたが、
やはり、ブラウザ上でのアプレットでのみこの設定は効くようです。
つまりあれはJavaプラグインのみの設定画面という事なのでしょうかね。
色々と調べてみたら、どうやらJavaでは昔、システムプロパティに
プロキシの設定を保持していたようです。
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/net/proxies.html
そこで2.1)HTTPの項目にある、実行時にシステムプロパティを設定する方法で
-Dhttps.proxyHost -Dhttps.proxyPort
をバッチファイルに追記したところ、プロキシを使うことが出来るようになりました。
というわけですので、取り敢えず解決とさせていただこうと思います。
皆さんどうもありがとうございました。
0907デフォルトの名無しさん
2007/10/16(火) 15:26:16まずダブルクリックで起動できるjarファイルを試してみたのですが、
・javawとの関連付けがうまくされていない人が結構いる(起動できない!)
・アイコンを設定できない
・見慣れない
と言う理由でさようならしました。
次にbatファイルを試してみましたがダブルクリックjarと似たような理由でやめました。
そこで、関連付けとは無縁でアイコンも設定できてエンドユーザにも馴染みのあるexeファイルで
起動ファイルを作ればいいじゃないか!と思ったのですが、この起動ファイルどうやって作るのが良いんでしょう?
Cを覚えるよりも簡単に出来る方法があれば教えてください。
0908デフォルトの名無しさん
2007/10/16(火) 15:32:06C#を覚える。
0909デフォルトの名無しさん
2007/10/16(火) 15:32:10PNGのアルファチャンネルが適用されないみたいで透過のオンオフ1bitになってしまいます。
これをちゃんと8bitアルファにする方法ありますか?
ググったらWindowsではそうなる、MacやLinuxでは大丈夫、
というような情報があったんですけど解決策はみつけられませんでした。
0910デフォルトの名無しさん
2007/10/16(火) 15:33:15exewrapとかjsmoothとかlaunch4jとかでいいんじゃないすか
0911907
2007/10/16(火) 16:38:20おぉ〜、こんな良い物があったんですか。
想定の範囲外でした。
exewrapのサイトには他の二つの事が簡潔にまとめられていて分かりやすかったです。
レスありがとうございました。
0912デフォルトの名無しさん
2007/10/16(火) 18:34:40このhtmlを解析して、スケジュールデータをmysqlで管理することになりました。
htmlソースをStringにいれて、解析モジュールに渡すところまでは作成しましたが、
このあとをどうするのがスマートなのか中々思いつきません。
どなたかよかったらご教授ください。htmlパーサなども見て見ましたがいまいちです。
0913デフォルトの名無しさん
2007/10/16(火) 18:40:210914デフォルトの名無しさん
2007/10/16(火) 18:47:50たぶんスマートなのは、グループウェアの改修
0915デフォルトの名無しさん
2007/10/16(火) 19:03:50確かにその通りですが、グループウェア(サイボウズ)をどうこうはできませんし・・・
0916デフォルトの名無しさん
2007/10/16(火) 19:10:47アイコンのαを1bitしか認識しないのはwinの仕様じゃなかったか?
vistaで変更されたはずだが。
0918デフォルトの名無しさん
2007/10/16(火) 19:23:04EclipseかEmacsで、プロパティの定義部分にタグジャンプする方法はないでしょ
うか?今はgrep以外に方法がないので、かなり面倒なのです。
0919デフォルトの名無しさん
2007/10/16(火) 19:45:26PNGのフォーマットは?
0920909
2007/10/16(火) 20:29:4324bit、8bitアルファチャンネル付きのPNGです。
iTunesみたくアンチかかったきれいなアイコンをタスクトレイに表示したいんですけど・・・
0921デフォルトの名無しさん
2007/10/16(火) 21:30:18PNG-32のARGB8bitでつくってみて変わる?
0922デフォルトの名無しさん
2007/10/16(火) 22:38:20今の段階では両方とも何か数値を放り込んで
最後にSystem.out.printlnで表示するだけって感じなので・・・
全然違うよって言われそうですがゆくゆくは何かメリット、デメリットや使い分けがあるのでしょうか
0923デフォルトの名無しさん
2007/10/16(火) 23:04:25変数とオブジェクトは全く違う概念だ。
たぶんプリミティブ型と、オブジェクトで勘違いしている?
まず今の段階が何のことか分からん。
メリットデメリットは、しっかり教科書を読んでください。
0924デフォルトの名無しさん
2007/10/16(火) 23:11:04どんな段階かは知らんけど、変数とオブジェクトは概念からして違う
数値ってのは変数じゃなくて、変数に入っている値
オブジェクトは(厳密には違うけど)そんな値に近い概念
変数ってのはあくまで「値」の場所を示すラベルのようなもん
0925デフォルトの名無しさん
2007/10/16(火) 23:16:06以下のようにすると
"Exception in thread "main" java.lang.NullPointerException"
と出てしまいます。なぜでしょうか?
public class zukei {
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.add(panel);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0)
; }
});
Graphics g = panel.getGraphics();
panel.getGraphics();
panel.setBackground(Color.red);
g.setColor(Color.blue);
g.fillRect(0,0,10,10);
frame.setVisible(true);
}
}
0926デフォルトの名無しさん
2007/10/16(火) 23:19:150927デフォルトの名無しさん
2007/10/16(火) 23:24:55↓のようにでてきます。29行目は"g.setColor(Color.white);"のとこですね。
Exception in thread "main" java.lang.NullPointerException
at zukei.main(zukei.java:29)
0928デフォルトの名無しさん
2007/10/16(火) 23:25:17たぶん、フレームを表示する前に描画することはできない
0930デフォルトの名無しさん
2007/10/16(火) 23:29:38Frameは表示できました!
でも、白い長方形が出てこないようですorz
0931デフォルトの名無しさん
2007/10/16(火) 23:33:26コードは概ねあっているんだが、書く場所が違う。
paintComponents とか repaint でググってみるべし。
あと少しだ、頑張れ
0933デフォルトの名無しさん
2007/10/16(火) 23:53:56ありがとうございます。
とりあえずframe.repaint(g);を最後の方の行に書き込むのかな?と
思ったのですが、どこの行に書いてもやっぱり長方形は表示されません…
>>932
書き込み時に無駄なimport文消してたらこうなっちゃったみたいです。
0934デフォルトの名無しさん
2007/10/17(水) 00:00:28でなきゃいつ誰に上書きされても仕方がない。
こんな感じ。
public class zukei {
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new JPanel() {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.blue);
g.fillRect(0, 0, 10, 10);
}
};
panel.setBackground(Color.red);
frame.add(panel);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0); }
});
frame.setVisible(true);
}
}
0935デフォルトの名無しさん
2007/10/17(水) 00:07:36おお!ありがとうございます!
やっぱ勉強不足っすね俺orz
0936デフォルトの名無しさん
2007/10/17(水) 01:04:00たびたび質問して申し訳ないのですが、
そのようにJPanelを作る時(無名クラス?)でないところに
paintComponentを記述するときはどうすればいいのでしょうか?
0937デフォルトの名無しさん
2007/10/17(水) 01:17:20public class MyPanel extends JPanel {
public void paintComponent(Graphics g) {
...
}
}
MyPanel panel = new MyPanel();
0938デフォルトの名無しさん
2007/10/17(水) 01:22:58説明が足りないと思うけど、どうなって欲しいの?
0939デフォルトの名無しさん
2007/10/17(水) 01:47:13あらかじめパネルがフレームに張られている状態で
そのパネルにfillRectで描画したい、という感じです。
0940デフォルトの名無しさん
2007/10/17(水) 01:57:470941デフォルトの名無しさん
2007/10/17(水) 01:58:580942デフォルトの名無しさん
2007/10/17(水) 02:04:57すいません、リアルで初心者なので…orz
Cと比べてJAVAは用語やらが多くてかなりパニくります…
0943デフォルトの名無しさん
2007/10/17(水) 02:27:40多分Cやってるとみて怯んだ奴が何人かいると思うがww
paintComponentを記述する目的が見えないから困っていた。
paintComponentって初心者がいきなり手を出す部分じゃない。
paint関係は、VB何かのWindows系のGUIをやってると
ちょっと戸惑うAWT,Swingの入り口。
何かやりたい事に対して道具を間違ってるんじゃないかという疑問がある。
paintComponentやpaintは、画面上で描画が必要になったら
毎度呼び出される「描画ロジック」を置いておく場所。
恐らく、静的なイメージバッファに絵を描きたいという用途だと思うが
そうだとすると、バッファを別に用意して描画はバッファにたいして行い
paint系はそのバッファの内容を描画する、とした方がいいのでは?
説明しきれてないな・・・・
0944デフォルトの名無しさん
2007/10/17(水) 02:41:37Cしかやってなくても、Win32SDKなりXの経験があれば気が付く問題だと思う。
0945デフォルトの名無しさん
2007/10/17(水) 02:43:11もっと言語そのものやそのバックグラウンドの設計思想とかを勉強したほうがいいんじゃないか
javaのGUIは言語そのもので規定されているわけでなく
その上に構築されているフレームワークだから
言語自体の言葉とフレームワークの言葉の両方が混じり合うので本当の初心者は面倒なことになる場合が多い
0946デフォルトの名無しさん
2007/10/17(水) 02:51:12Swingは描画するだけなら特に変なことはやってないけど。
0947デフォルトの名無しさん
2007/10/17(水) 05:03:030948デフォルトの名無しさん
2007/10/17(水) 07:52:47>Cと比べてJAVAは用語やらが多い
用語が多いのは、色々な機能や概念を逐一説明するのが面倒だからだよ
Cでも用語多いぞ、ほとんどはその現場固有の呼び方だから、一般的に通じない事も多いけど…
まずはJavaの基本機能を習得してからGUIに入るべきだろう
少なくとも継承とオーバーライドは覚えろ
その上で最初に覚える事の少ないAppletで実装する事がいいと俺は思う
0949デフォルトの名無しさん
2007/10/17(水) 08:11:54適当にペイントツール作った
まったく使い物にはならなかったけど動くだけでそれなりにモチベ上がる
0950デフォルトの名無しさん
2007/10/17(水) 08:17:04やりながら覚えるのはありとは思うけど、一度にたくさんの事を覚えられる人は少ないし、なんだかんだと効率が悪いよ
別に継承を完全に習得してからにしろ!というわけじゃなくて、
class Foo extends Bar {}
では継承が行われていて、Barの機能を拡張している程度の理解でいい。
クラスって何?って段階で継承って何?というのは流石に厳しい。
0951デフォルトの名無しさん
2007/10/17(水) 13:09:180952デフォルトの名無しさん
2007/10/17(水) 13:33:20リフレクションとか使われたら、もう訳ワカラン
0953デフォルトの名無しさん
2007/10/17(水) 14:53:18JDK1.6でこのコンパイルが通りました。
おそらく古いVMでも動作するようになるので、これからはコンパイルが通る限り
このオプションを付けていこうと思うのですが何かデメリットはありますか?
0954デフォルトの名無しさん
2007/10/17(水) 14:58:030955デフォルトの名無しさん
2007/10/17(水) 16:05:570956デフォルトの名無しさん
2007/10/17(水) 16:40:220957デフォルトの名無しさん
2007/10/17(水) 17:05:12それでコンパイルが通ったからといって1.2のVMを含む環境で動作するとは限らない。
1.2より新しい環境で追加されたクラスやメソッドを使用していてもコンパイルを通るから。
1.2のVM向けのバイトコードしか生成しなくても、使っているメソッドとかまではチェックが入らない。
0958953
2007/10/17(水) 17:56:39どうやらJDK1.2で書かれたコードを1.2向けにコンパイルするというオプションなので
>>953は全く見当外れのレスですね。
JDK1.6を使ってコードを書く以上デフォルトのソースリリースである
1.5未満のバージョンは切り捨てなければいけないみたいです。
とは言っても、世の中の大半のマシンはJRE1.5未満だと思うので
一般向けに公開するファイルを作るにはJDKを1.4あたりにバージョンダウンしないといけなさそうです。
0959デフォルトの名無しさん
2007/10/17(水) 18:09:43脳内ソースですか
0960デフォルトの名無しさん
2007/10/17(水) 18:16:520961デフォルトの名無しさん
2007/10/17(水) 18:25:440962デフォルトの名無しさん
2007/10/17(水) 18:26:06でも、たとえば String#split とか今じゃ当たり前のように
使っているメソッドすら使えないってのは相当きついだろうね
0963デフォルトの名無しさん
2007/10/17(水) 18:37:01マックはナイトリーなら6が出てきてるけど
0964デフォルトの名無しさん
2007/10/17(水) 18:43:37Javaって一般アプリには全然浸透してないよね
ダウンロードから起動するまでの道筋がはっきり確立していないせい?
もうちょっとなんとかして欲しい。
0965デフォルトの名無しさん
2007/10/17(水) 18:46:450966デフォルトの名無しさん
2007/10/17(水) 19:02:010967デフォルトの名無しさん
2007/10/17(水) 19:23:10javaで作ったアプリどうやって公開しようかと悩みつつどうせ完成してないし悩んでも無駄無駄
解凍してクリックで起動できたらそれでいいや
0968デフォルトの名無しさん
2007/10/17(水) 19:49:33JavaWebStartがあるだろ
0969デフォルトの名無しさん
2007/10/17(水) 20:20:020970デフォルトの名無しさん
2007/10/17(水) 22:10:450971デフォルトの名無しさん
2007/10/17(水) 22:11:490972デフォルトの名無しさん
2007/10/17(水) 22:39:24JavaWebStart 使ってます。
あるユーティリティクラスに引数1つを持つメソッドが3つあって、
long, Date, Calendar で各々オーバーロードしてます。開発ターゲットは 1.4です。
ほとんど全てのユーザは 1.4 で、問題ないのですが、
あるユーザは 1.6, 1.5, 1.4が入っていて、1.6 の javaws で起動したときのみ(キャッシュは同一かな?)、
Date を引数にした関数が not found になります。
以下のようにしても忽然と姿を消しています。
Method[] methods = TheClass.class.getMethods();
for (int i=0; i<methods.length; i++) {
System.out.println(methods[i]);
}
このユーザのPCからは 1.6 を除いてもらうことにしたのですが、
これに似たような状況を見聞きした方はいらっしゃいますか?
0973デフォルトの名無しさん
2007/10/17(水) 22:55:550974デフォルトの名無しさん
2007/10/17(水) 23:09:48jre同梱してしまえ
0975デフォルトの名無しさん
2007/10/17(水) 23:24:01javaアプリケーションを用いて描画を行い、描画された物をファイルに保存するプログラムを作成しています。
現在、Frameを用いて新たにウィンドウを開き、そこにマウスで描画を行い、ボタンを配置して閉じる事が
できるようになりました。描画には、Graphics、getGraphicsを使っています。
しかし、ボタンを押すことでファイルに保存を行い、ウィンドウを閉じる…というプログラムができません。
ファイル保存するためには、imageファイルにすると思っているのですが、変換が上手く行かず、
さらに本当にimageにするべきなのか解らず右往左往している状況です。
どなたかご教授よろしくお願います。
0976デフォルトの名無しさん
2007/10/17(水) 23:32:22・GraphicsをもらうためのgetGraphicsはどのクラスのgetGraphicsを使ってるのか
・そのimageファイルっていうのは具体的に何のことを言ってるのか
・その上手くいかない変換っていうのは具体的にどうやってるのか
0977975
2007/10/18(木) 00:02:11・GraphicsをもらうためのgetGraphicsはどのクラスのgetGraphicsを使ってるのか
フレームのクラス内にGraphicsの定義を行っています。getGraphicsはそのクラス内にある
マウスイベントを受け取るリスナーのクラス内で使用しています。
・そのimageファイルっていうのは具体的に何のことを言ってるのか
jpegやgif、pngといった画像ファイルの形式の事です。
・その上手くいかない変換っていうのは具体的にどうやっているのか
フレームのクラスには以下の事を書いています。
BufferedImage image = new BufferedImage(1000, 800,BufferedImage.TYPE_INT_BGR);
Graphics g;
マウスイベントのクラス内では、以下の通りに書いています。
g = image.getGraphics();
g.setColor(c);
g.drawLine(x, y, x1, y1);
このような形で描画を行おうとしていますが、描画が行えませんでした。
今まで、ただフレーム内に書くだけの場合は、フレームのクラスにおいて
Graphics g;
マウスイベントのクラス内では
g = getGraphics();
g.setColor(c);
g.drawLine(x, y, x1, y1);
の形にすることで描画を行う事が可能でした。
0978デフォルトの名無しさん
2007/10/18(木) 00:26:22>g.setColor(c);
>g.drawLine(x, y, x1, y1);
>このような形で描画を行おうとしていますが、描画が行えませんでした。
これはイメージに対して描画してるわけだけど、イメージとフレームは別物なので、イメージに描画してもフレームには表示されない。おk?
↓でイメージの内容をフレームに表示してみそ
g = getGraphics();
g.drawImage(image, 0, 0, null);
0979デフォルトの名無しさん
2007/10/18(木) 00:28:270980975
2007/10/18(木) 01:07:04g = getGraphics();
g.drawImage(image, 0, 0, null);
にすることによって描画を行う事ができました。しかし、
BufferedImage image = new BufferedImage(280, 170,BufferedImage.TYPE_INT_BGR);
の数値の分だけ画面が真っ黒になってしまいました…。
>>979さん、返信ありがとうございます。
考えてみればそうですね…。ただ、少し長くなるので、txtでどこのアップローダーがいいのかよく解らなくて上げていませんでした。
見れるか解りませんが、アップします。
http://www.uploda.org/uporg1070292.txt.html
先ほど、イベントのクラスを分ける、と書きましたが、作業を行っているうちに、イベントのクラスを作らない事にし、修正を行いました。
importの部分は…色々取ってきてそのままになっています。
0981デフォルトの名無しさん
2007/10/18(木) 01:14:26>の数値の分だけ画面が真っ黒になってしまいました…。
それは単に、最初にイメージ全体を白で塗りつぶしておけばいいんじゃない。
g = image.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, 280, 170);
とかで。
0982デフォルトの名無しさん
2007/10/18(木) 01:15:13他のクラスをそのままコピペだけでA.javaに統合したのですが
エンクロージング・インスタンスが無いとのエラーが出ました
このままでは実行できないのですが、どうすればいいでしょうか?
0983975
2007/10/18(木) 01:27:43fillRectで背景を真っ白にしようとしましたが、上手く行きませんでした…。
そこで、
BufferedImage image = new BufferedImage(1, 1,BufferedImage.TYPE_INT_BGR);
とすることで解決させました。
0984デフォルトの名無しさん
2007/10/18(木) 03:06:19まあ、そこら辺はjavaカーネルとか、モジュール化が進んでいくみたいだから初めは最小限のインストールで・・・で良くなるんじゃない?
0985デフォルトの名無しさん
2007/10/18(木) 04:22:49JREっていつの間にJDK並に大きくなったんだと思って確認した。
10〜20MBってとこだね。まあ50MBが大きいって人間には10MBでも面倒さは一緒かもしれんが。
0986982
2007/10/18(木) 04:47:450987デフォルトの名無しさん
2007/10/18(木) 05:54:11統合するな。以上。
訳が分かってからにしなさい。
0988デフォルトの名無しさん
2007/10/18(木) 06:05:02とか言いながらも終わってねぇしw
0989デフォルトの名無しさん
2007/10/18(木) 06:34:450990デフォルトの名無しさん
2007/10/18(木) 06:51:42任せた
テンプレに追加する事は特に無いかな?
0991デフォルトの名無しさん
2007/10/18(木) 07:03:42立てようとしたら、立てられませんだってさ…
テンプレに追加する事は特にないと思う。
0992デフォルトの名無しさん
2007/10/18(木) 09:17:07http://pc11.2ch.net/test/read.cgi/tech/1192666106/
0993デフォルトの名無しさん
2007/10/18(木) 09:31:300994デフォルトの名無しさん
2007/10/18(木) 11:06:15乙
0995デフォルトの名無しさん
2007/10/18(木) 11:56:550996デフォルトの名無しさん
2007/10/18(木) 12:20:590997デフォルトの名無しさん
2007/10/18(木) 12:26:160998デフォルトの名無しさん
2007/10/18(木) 12:26:470999デフォルトの名無しさん
2007/10/18(木) 12:27:221000デフォルトの名無しさん
2007/10/18(木) 12:27:4210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。