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

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

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

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

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
5 :デフォルトの名無しさん2011/10/18(火) 22:05:20.01
>>1
どんまい
さっさと削除依頼出してこいマヌケ
11 :デフォルトの名無しさん2011/10/19(水) 02:31:49.07
>>5
あっちはテンプレ間違えてるだろアホか
2 :デフォルトの名無しさん2011/10/18(火) 19:54:50.61
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 9
http://hibari.2ch.net/test/read.cgi/tech/1261232019/
■ SWT は --
Java 高速GUI SWT 3
http://hibari.2ch.net/test/read.cgi/tech/1164877399/

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

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 71 ★★
http://hibari.2ch.net/test/read.cgi/tech/1309076891/
3 :デフォルトの名無しさん2011/10/18(火) 19:55:09.03
■ NetBeansに関する雑談は --
NetBeans Part6
http://hibari.2ch.net/test/read.cgi/tech/1273665879/
■ Eclipseに関する雑談は --
Eclipse統合M31【Java/C++/Ruby/Python/Perl】
http://hibari.2ch.net/test/read.cgi/tech/1295886572/

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

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
http://www.java.com/ja
6 :デフォルトの名無しさん2011/10/18(火) 22:10:04.17
JavaのSwingとアプレットの違いがわかりません。
Swingは描画クラスですよね?アプレットとの関連は?
7 :デフォルトの名無しさん2011/10/18(火) 22:24:21.59
>>6
全てのものはオブジェクトです。
8 :デフォルトの名無しさん2011/10/18(火) 22:31:04.45
>>7
ありがとうございます。アプレットクラスってありますか?
9 :デフォルトの名無しさん2011/10/18(火) 23:26:09.04
13 :デフォルトの名無しさん2011/10/19(水) 05:07:57.39
はじめまして

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

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

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

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

Socketに対するPacketのつもりで書いただけだったので、
その誤解は想定外でした。
申し訳ない。
38 :デフォルトの名無しさん2011/10/20(木) 19:43:21.48
arraylistで

list.remove(10);

とやっても要素が削除されないんですがなぜでしょう?
45 :デフォルトの名無しさん2011/10/22(土) 00:07:54.03
FileReaderクラスを作成し、read()でテキストファイルを一文字ずつ読み込んだところ、
改行コードが \r\n として読み込まれてしまいます。
C言語では、\r\n は \n に自動的に置き換えられると思うのですが、
Javaで自動的に置き換えるにはどのようにすればよいのでしょうか?
48 :デフォルトの名無しさん2011/10/22(土) 00:19:37.71
>>45
System.getProperty("何か忘れた")で改行文字をOS毎に識別してみては?
67 :452011/10/22(土) 13:16:06.03
>>48
C言語のコードを移植したいので、
できればread()で得られたint型が改行かどうか判定する方法を探しています。
System.getProperty()で改行文字を得る方法は、戻り値がString型になってしまうので、困っています。
68 :デフォルトの名無しさん2011/10/22(土) 13:25:16.08
>>67
>戻り値がString型
えー

Windowsなら13 → 10 の順番に来た文字コードを怪しめばいいと思うけど
73 :デフォルトの名無しさん2011/10/22(土) 14:18:33.96
>>45 >>67
ファイルを行ごとに分けたいが、行末判定は自前で書きたくない、というのであれば、
BufferedReader#readLine() がおすすめ。"\n" と "\r" と "\r\n" で勝手に区切ってくれる。
80 :452011/10/22(土) 16:36:30.50
>>73
一行ごとだと、そんな便利な機能があるんですね。
でも、今は、一文字ごとの読み込みで考えています。
一文字ずつ読み込んで、字句解析の様な事をするプログラムを作ってます。
解る方いらっしゃいましたらよろしくお願いいたします。
81 :デフォルトの名無しさん2011/10/22(土) 16:47:00.08
>>80
字句解析なら1バイト長で取得したほうがきれいに作れる気がしますが・・

82 :452011/10/22(土) 16:53:12.84
>>81
一バイト長の読み込みが良いのですが、\r\nは自動的に\nに変換してほしいんです。
86 :デフォルトの名無しさん2011/10/22(土) 17:52:00.12
>>82
>>68 で解決だろ
88 :デフォルトの名無しさん2011/10/22(土) 17:53:41.72
>>82
1byte長で読み込むけどCR-LFを判別したいってことか。
標準にはそんな仕様ないから自分でCR見つけたら次の1byte読んでLFなら捨てるようなメソッド組めばいいんじゃない?
あ、LFだったとしても文字コードによってはマルチバイトで次がある可能性があるから気をつけて実装しないとダメだよ。
93 :452011/10/22(土) 21:30:29.96
>>68
すみません。コメントしていただいたのに見逃してました。
そうですね。少し手間はかかりますが、そうすることにします。

>>88
なるほどです。そうすることにします。
ありがとうございます。
46 :デフォルトの名無しさん2011/10/22(土) 00:13:30.33
Collection<Cloneable>のオブジェクトをdeep copy(格納されている要素すべてをclone()してコピー)したいと考えています。
ですが、Cloneable自体はclone()を宣言していないのでcloneableObject.clone()とは書けません。

このような場合、
cloneableObject.getClass().getMethod("clone").invoke(cloneableObject);
と書くしかないのでしょうか。
良い書き方があれば教えてください。
49 :デフォルトの名無しさん2011/10/22(土) 00:22:46.62
>>46
確かCollection<Cloneable>のオブジェクトは最初からcloneメソッドを実装していないと思います。
実装者がcloneメソッドをオーバライドしてdeepcopyするロジックを書かないといけないのかもしれません。
まちがってたらごめんなさい。
58 :462011/10/22(土) 12:22:46.24
>>49
コード例を挙げると、
List<Cloneable> cl = Arrays.asList(cloneableObjectArray);

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

引き続きよろしくお願します。
60 :デフォルトの名無しさん2011/10/22(土) 12:42:11.28
>>58
List createDeepClone(List list) {
for(Object o : list) {
if(o instanceof List) {
createDeepClone(o);
} else {
// オブジェクトをクローンして値を格納。
Object newObj = o.clone();
(省略)
}
}
}
List型のみに限定するとこんな感じかな。ちょっと詰めが甘いけど。。
61 :デフォルトの名無しさん2011/10/22(土) 12:48:24.37
>>60
Object#clone()はprivateだから無理。
66 :デフォルトの名無しさん2011/10/22(土) 13:05:35.39
>>64
だから>>46はList<Cloneable>ってCloneable限定してるじゃないか。

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

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

んで、Collection<Cloneable>の代わりにCollection<MyCloneable>を使う感じ。
50 :デフォルトの名無しさん2011/10/22(土) 00:48:46.46
Java7で導入されるプロパティっていうようなアクセッサって
どんなメリットがあるんですかね…

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

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

後者については「どのクラスローダーが?」って問題があるけど、時間をかければ十分可能。
63 :デフォルトの名無しさん2011/10/22(土) 12:50:51.42
>>53
むり
55 :532011/10/22(土) 10:01:42.19
ありがとうございます

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

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

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

それとも、外部からライブラリを持ってきていて、
その中であるクラスが使われているかを調査したい、みたいな事なのか。
その辺の事情も書かないと、有効な回答は出ないと思うよ。
89 :572011/10/22(土) 18:19:57.87
>>53 >>55
試しに作ってみた。使用クラスが >76 とは違うけど。
ttp://ideone.com/W8svq

それっぽくは動くんだけど、ほんとに合ってんのかな?
よく考えたら、確認の仕様がないな・・・
59 :532011/10/22(土) 12:40:00.59
当然外部ライブラリのクラスも含みます。
プログラム自身が実行中にメモリ内から探すので
ソースコードを用意してその中から探すのではありません。
そして、クラスの利用の有無ではなく
直接・間接を問わずあるクラスを継承、またはインタフェースを実装しているクラスを探します。
76 :572011/10/22(土) 14:38:14.93
>>59
聞きたいのはそこではなく、なぜ「プログラム自身」が「実行中に」検索する羽目になるのか、という点。
一足飛びにメモリ検索まで行かなくても、他に妙案が出るかもしれないでしょ。

それはそうと、適当にググったらこんなのが見つかった。詳細は知らんけど。
interface com.sun.jdi.ClassLoaderReference#definedClasses()
このクラスローダによって定義されたすべてのロード済みクラスのリストを返します。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jpda/jdi/com/sun/jdi/ClassLoaderReference.html
62 :デフォルトの名無しさん2011/10/22(土) 12:49:24.67
すまん嘘ついた。
private じゃなくて protectedだな。
64 :デフォルトの名無しさん2011/10/22(土) 12:54:36.52
>>62
ああそこはcloneメソッドを実装しているクラスかインタフェースにルール決めするしかないかな^^
65 :デフォルトの名無しさん2011/10/22(土) 12:56:41.49
AbstractCloneableみたいなの作ってpublicなclone持てばいいんじゃないの?
Cloneableはただのマーカーだからcloneの成功が保証されるわけじゃないから結局実装クラスで呼び出さないとわからない。
69 :デフォルトの名無しさん2011/10/22(土) 13:30:39.57
JAVAの仕事がしたいので勉強しようかと思います
お勧めの書籍やサイトを教えてください。フレームワークというのも重要と聞きました
それも教えてもらえるとありがたいです
71 :デフォルトの名無しさん2011/10/22(土) 13:38:25.19
>>69
まず書店に足を運んで初心者向けの書籍を立ち読みする。
初心者向けと銘打たれている中にも難易度の差があるから実際に読んでみて一番しっくり来たものを1冊購入する。

フレームワークは重要だけどこれからJava始めますってレベルなら無用の長物。
まずは基本をがっつり固めて勉強するべきだと思う。
あとは・・・Oracle認定Javaアソシエイツ(OCJ-A)かOracle認定Javaプログラマ(OCJ-P)の勉強をすると文法には詳しくなる。
70 :デフォルトの名無しさん2011/10/22(土) 13:35:52.76
HttpClientやHttpPostクラスから、URLクラスのopenConnectionのようなメソッドの呼び方を教えて下さい。
75 :デフォルトの名無しさん2011/10/22(土) 14:35:21.46
>>70
HttpClientクラスがHTTP送受信の機能を提供してるみたいだけど何がやりたいの?
77 :デフォルトの名無しさん2011/10/22(土) 14:51:03.23
>>75
えっと、HttpClientからサイトに描画している文字列をinputstream経由で取りたいんです。
79 :デフォルトの名無しさん2011/10/22(土) 15:10:50.09
>>77
じゃあHttpClientクラスなどに頼らず、URL、HttpURLConnection、ByteArrayOutputStreamなどを使って
一から実装したほうが近道なのでは?

ここなんかシンプルですよ
http://x68000.q-e-d.net/~68user/net/java-http-url-connection-1.html
72 :デフォルトの名無しさん2011/10/22(土) 13:50:13.45
オブジェクト指向を知らないならJavaの入門書を買って
詰まらないサンプルコードとにらめっこして
クラス定義、メソッド、プライベート、パブリックなど初歩から地道にやってくことになる

他のオブジェクト指向言語を知っているなら
Java APIドキュメントやWebに転がってるサンプルコードを見ながら簡単なものを作ってみるのもいい。
テキストエディタでゴリゴリ書いてもいいけど開発環境使うならEclipseがオススメ
74 :デフォルトの名無しさん2011/10/22(土) 14:30:03.01
>>71
>>72
ありがとうございます。オブジェクト指向すら知らないので本屋にいって探してきます
83 :デフォルトの名無しさん2011/10/22(土) 17:01:40.78
windows環境でC言語を始めるにはvisual studio以外にどういう無料の選択肢やコンパイラがありますか?
guiは不用でnative dll作成 (jni,jna)とdirectx,sse,avx,gpu(intel,amd)など常に最新のnative機能とライブラリにそのコンパイラ環境でアクセス出来るかどうかがメインです。
出来ればgplライセンスでなくフリーでプロジェクトの活動も活発なものを期待していますが、そんなオープンソース・コミュニティーみたいな都合がいいwindows用のC言語プロジェクトはwindows環境には存在しないですよね?
84 :デフォルトの名無しさん2011/10/22(土) 17:28:08.12
>>83
その前に、中学校の勉強をしっかりやった方がいいんじゃないかな。
90 :デフォルトの名無しさん2011/10/22(土) 18:43:43.72
正規表現について質問させてください
X<B#>A<B#>というStringがあったとして
<*>で囲まれたもの以外のalphabetをreplaceAllを用いて"|"に変換するにはどうすれば良いのでしょう?

Javaでの正規表現の書き方について、参考になるホームページなどがありましたら、教えていただけると助かります。
91 :デフォルトの名無しさん2011/10/22(土) 20:41:02.75
正規表現はやめたほうがいい
92 :デフォルトの名無しさん2011/10/22(土) 21:18:59.07
俺、正規表現は全く分からねえ。
どうしてもできないのなら、俺みたいにJython使えばいいんじゃね?
でもきっと、ちゃんと正規表現が使えると便利なんだろうな・・・・
94 :デフォルトの名無しさん2011/10/22(土) 22:07:00.61
>>91
正規表現は不味いんですか?
char[]に分解して書くとかなり大変なので
正規表現で片付けようと思ったのですが。

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

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

abstructクラスの部分集合のクラスかインターフェイスを定義したいんだが無理ですよね?
104 :デフォルトの名無しさん2011/10/23(日) 10:05:24.17
>>95
adapterパターンでググれ
ただしそのabstractクラス設計者が意図している対応かは知らん
110 :デフォルトの名無しさん2011/10/23(日) 13:10:14.45
>>96
>>104
サンクス、調べてみまつ
96 :デフォルトの名無しさん2011/10/23(日) 00:22:51.59
警告じゃなくエラーじゃないのか
そのクラスも”abstruct ”って宣言しないと
97 :デフォルトの名無しさん2011/10/23(日) 02:53:33.86
実際の文字列がどんなのかわからんが
例の文字列を対象にするなら
replaceAll(".*?(<[^>]*?>).*?", "l$1")
ってのはどうだろう
107 :デフォルトの名無しさん2011/10/23(日) 10:36:16.96
>>97
俺も似たようなのしか思いつかなかったんだけど、
それはreplaceAll使えっていう出題者の意図に沿った回答なんだろうか…
98 :デフォルトの名無しさん2011/10/23(日) 03:34:13.90
昨日まで動いてたプログラムが全部
「Could not find the main class」
になって突然全く実行できなくなった。

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

どんな原因が考えられますか?
100 :デフォルトの名無しさん2011/10/23(日) 03:41:36.57
一旦クラスファイルを全消し(clean)した後、
再コンパイルせずに起動スクリプトまわしたとか
101 :982011/10/23(日) 03:52:11.14
>>100
確かに、最近cleanしました。
その後起動スクリプトを実行すると何か障害が発生するんですか?
103 :982011/10/23(日) 04:16:31.04
automatically buildにチェック入れてたので大丈夫かと思ってたんですが
実際はbinにクラスファイルがありませんでした

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

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

ってやったら、rへの参照がなくなって実行中なのにGCされてしまう可能性はありますか?
108 :デフォルトの名無しさん2011/10/23(日) 10:46:14.62
>>105
自分が書いたコードの範囲だけみると確かに参照が無くなっているように見えるけど、
内部的には参照が保持されてる(ThreadGroupでググろう)。
なのでそういう心配はない。

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

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

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

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

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

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

初期値の設定まではわかるのですがその後の処理が見当もつきません。
117 :デフォルトの名無しさん2011/10/23(日) 21:32:10.11
>>115
宿題スレ行け。

for (int i=0; i<配列.length; i++) {
....for ( int j=0; j<配列[i].length; j++) {
........ // 配列[i][j]出力
....}
}
116 :1132011/10/23(日) 19:10:09.94
Groovyで
#{set title:'arg'}
の'arg'に変数を使う方法を知りたい

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

誰かわかんないかなあ
118 :デフォルトの名無しさん2011/10/23(日) 21:47:33.41
>117
たらい回しされ過ぎワロタ

for (int i = 0; i < 配列.length; i ++) {
  for (int j = 0; j < 配列[i].length; j++) {
    // 配列[i][j]出力
  }
  // 改行出力 (←new!!)
}
122 :デフォルトの名無しさん2011/10/25(火) 11:59:38.65
すみません。今週の月曜日の日付を取得するには
どうしたらいいでしょうか?
125 :デフォルトの名無しさん2011/10/25(火) 13:56:43.88
データ通信についての質問なのですが、
JMFを使いキャプチャした画像を他のPCに送り表示させようと考えているのですが、
250KB/Sの送信量になり、受け取るPCで大量の取りこぼしが発生し、画像を再構築することができずにいます。
現在、DatagaramChannelを使い、画像を1024byteのパケットに分割した上で、送っているのですが、
取りこぼしが少なくなるように改善することはできないでしょうか?
よろしくお願いします。
128 :デフォルトの名無しさん2011/10/25(火) 14:25:37.95
>>125
取りこぼしが嫌なら、なんでDatagramChannelを使っているの?
129 :デフォルトの名無しさん2011/10/25(火) 16:09:43.57
>>128
データ量が多いのでUDPを使って通信したいと思ったからなのですが、
socketを使用するべきでしょうか?
130 :デフォルトの名無しさん2011/10/25(火) 16:54:31.30
取りこぼしや破損時の再送信とか並べ替えのやり方を
他人に聞かないとできないなら、素直にSocket使った方がいい。
132 :1252011/10/25(火) 17:17:49.20
特性を考えると、確かにそうですよね
取りこぼしたなら、取りこぼしを補填するような方法を考えるべきでした
Socketを使う前にその辺を改めて考えてみます
ありがとうございました
133 :デフォルトの名無しさん2011/10/25(火) 17:20:22.67
マルチキャスト使う場合はDatagramSocket使わざるを得ないんだっけ?
135 :デフォルトの名無しさん2011/10/25(火) 19:51:35.01
JavaEEがなんなのかよくわからないので教えてください。
自分の中では↓の認識なのですが、合っているでしょうか。


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

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

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

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

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

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

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

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

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

追加で1点><


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

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

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

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

むむむ。

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

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

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

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

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

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

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

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

お疲れ様でした。
157 :デフォルトの名無しさん2011/10/26(水) 03:30:04.30
>>153
まちがってる。
159 :デフォルトの名無しさん2011/10/26(水) 12:39:33.63
質問です。

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

また、そうする場合、Exceptionのどのパラメータを基に判別すれば良いでしょうか。
191 :デフォルトの名無しさん2011/10/27(木) 11:02:00.54
>>159
ふつうは catch で分ける。

try {
...
} catch (FileNotFoundException notFound) {
...
} catch (EOFException eof) {
...
} catch (IOException ioe) {
// それ以外
}
160 :デフォルトの名無しさん2011/10/26(水) 12:55:41.67
クラスAの非静的パブリックメソッドは、Aの任意のサブクラスでオーバーライドできる

これの答えが手持ちの問題集では×らしいんだが、
◯だよな?
162 :デフォルトの名無しさん2011/10/26(水) 17:45:10.31
飛ばされてきました
例えばRADツールでframeとpanelを作って、panelにlabelを配置して、そのpanelをframeに配置したとしますよね
その後でlabelに変更を加えて、その変更をframeに反映させたいときはどうすればいいのでしょうか
一度frameからpanelを削除して、また改めてpanelを配置するしかないのでしょうか
164 :デフォルトの名無しさん2011/10/26(水) 18:37:50.86
んなもんRADツールや編集の内容によるだろ。分かるかボケ。
普通はlabelクリックしたら編集モードに入るだろ。そこで編集しろ。
165 :デフォルトの名無しさん2011/10/26(水) 19:05:13.76
>>164
ボケはおまえだ
167 :デフォルトの名無しさん2011/10/26(水) 20:19:13.44
Windowsでは文字が正しく表示されていましたが、Macでは…と表示されてしまいます。
同じフォントサイズで表示するにはどうしたらいいのでしょうか。
168 :デフォルトの名無しさん2011/10/26(水) 20:55:14.79
せめて、どこに表示される文字なのか、位は書くべきだろ。
どんだけエスパー頼みなんだよ。
173 :デフォルトの名無しさん2011/10/26(水) 23:54:13.54
>>168
すみません、ただフレームに張り付けたパネルに張り付けたオブジェクトに変更を加えた場合の一般的な表現をしたかっただけです
伝わらなければ家に帰ってからソースをそのまま張り付けようと想うのですが
そもそも開発環境に依存した話なのかjava自体の話なのかも分からないのです
182 :1682011/10/27(木) 01:59:38.92
>167 >169
追加で3点
? Win でコンパイルしたクラスファイルを Mac に持っていったのか、それとも、Mac でコンパイルし直したのか
? System.out.println(button.getText()); の結果
? setFont() しているならば、その部分をコメントアウトして実行した結果

>>173
安価ミスかな?
「Label の変更」とは、具体的に何なのか。
その変更は RAD ツールで静的に行うのか、それとも、実行時に動的に行うのか。
前者ならば、使用している RAD ツールは何なのか。
後者ならば、そうだね、まずはソースを貼ってもらった方が、話は早そうだね。
169 :デフォルトの名無しさん2011/10/26(水) 21:32:41.60
すみません。
JButtonクラスのオブジェクト内に表示させる文字です。
170 :デフォルトの名無しさん2011/10/26(水) 23:13:06.24
JavaでAWTとSwing使ってゲームを作ったのですが
C言語とGDIに変換したいです。
JavaをC言語に変換するツールってありませんか?
ぐぐってもどこもリンク切れだったりDLしてもなぜかバグってるのばかりです。
171 :デフォルトの名無しさん2011/10/26(水) 23:36:49.30
同じ長さのbyte[]が2つあったとして
その2つのバイト列の論理積を取ろうとした時、

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

みたいに書くと1バイトずつ論理積とっていきますよね。
しかし昨今のCPUなら8バイト以上同時に論理積を取れます。
Cならこのへんは最適化されるだろうけど、Javaだとどうなんですか?
174 :デフォルトの名無しさん2011/10/27(木) 00:27:03.43
>>171
Cだとそのへんはどういう最適化がされるんですか?
175 :デフォルトの名無しさん2011/10/27(木) 01:01:19.99
>>174
少なくともキャストが可能だからint配列として処理できるし
複数バイト同時に論理積を取る事で実際のループ回数を減らせるはずです
196 :デフォルトの名無しさん2011/10/27(木) 19:44:23.62
>>171
Windows SDKのコンパイラで/O2 /archオプションをつけて
コンパイル
ここの部分のCのソースコードに対して

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

こんなコード吐き出した

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

全然最適化されてない模様
197 :デフォルトの名無しさん2011/10/27(木) 19:50:19.93
>>196
i < 8をaとbの長さに一致させたら?
176 :デフォルトの名無しさん2011/10/27(木) 01:12:22.39
ジャバ言語のプリミティブ配列ではアラインメント連続であることが言語仕様で保障されているんですか?
178 :デフォルトの名無しさん2011/10/27(木) 01:23:37.07
私は全くもって>>176とは関係無いのでが
もう少し誠意を持って答えるべきじゃないのかと思います
私は>>176とは縁もゆかりもありませんけれどもそう思いました
192 :デフォルトの名無しさん2011/10/27(木) 12:20:10.02
>>170
いっそのことVMをC言語で書くってのはどうだ。

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

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

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

>>192
JNI仕様では(必要があれば)コピーして渡すことになってるのでみっちり詰め込んでなくても仕様上の不都合はない。
そんなことしてるJVMがあるのかは知らんけど。
195 :デフォルトの名無しさん2011/10/27(木) 13:49:25.86
>>194
fork/joinはスレッドで並列処理するシロモノだから関係ないぞ。
202 :デフォルトの名無しさん2011/10/27(木) 22:28:44.95
>>195
こんな感じじゃないの。よく知らんけど。
http://pastebin.com/0NYWxiHv
209 :デフォルトの名無しさん2011/10/28(金) 01:29:34.55
>>178
179 :デフォルトの名無しさん2011/10/27(木) 01:25:16.36
jvmの[]オブジェクトはアラインメント連続であることがjvm仕様で保障されているんですか?
183 :デフォルトの名無しさん2011/10/27(木) 04:06:59.58
>複数バイト同時に論理積を取る事で実際のループ回数を減らせるはずです
この程度ならJITがやってる。プログラマの仕事じゃない。
185 :デフォルトの名無しさん2011/10/27(木) 05:35:34.84
8このbyte並べてlongに直してlongとlongで論理積とって8このbyte配列にぶっこむと早くなるの?
187 :デフォルトの名無しさん2011/10/27(木) 06:06:53.35
>>185
いや同じバイナリデータについて
long[]とbyte[]双方で論理積のベンチとって見たら明らかになるかな
最適化されてなければ、データが十分にでかいと
long[]のほうが数倍速い
186 :デフォルトの名無しさん2011/10/27(木) 05:59:45.62
そう言えば最近Swing弄ってないんだが、
Zオーダーだっけ?アレの解消って皆どうやってる?
188 :1702011/10/27(木) 07:22:26.37
ちなみに用途としてはGCCでコンパイルしたいからです。
GCJでやったらとんでもなく重たくなったのでC言語にして
GCCでコンパイルしたいです。なにかないですか?
190 :デフォルトの名無しさん2011/10/27(木) 08:52:01.75
TomcatでWebアプリを開発したんですが、実際に稼動させるのに
良いサーバーってありますか?
199 :デフォルトの名無しさん2011/10/27(木) 20:57:55.53
>>190
Tomでいいじゃん。
知らず知らずのうちに、Tomに依存した作りになってるかもしれんぞよ。
200 :デフォルトの名無しさん2011/10/27(木) 21:31:58.82
>>199
世の中にはTOMって略す奴もいるんだなw
201 :デフォルトの名無しさん2011/10/27(木) 21:50:37.48
javaプログラム内でオブジェクト同士がもつ木構造的な関係を外部ファイルに保存し、
再利用、また人の目で確認するためにはxmlで保存するというのが
普通のやり方になるのでしょうか?
java.xml.parserでパースすると、<element>hoge</element>みたいな場合に
hogeがelementの値ではなく子要素になるところや、改行もテキストノードになってしまうところが
なんとなくもやもやして、他の方法はないのかなあと考えています。
203 :デフォルトの名無しさん2011/10/27(木) 22:30:03.19
>>201
><element>hoge</element>みたいな場合にhogeがelementの値ではなく子要素になる
え?
"element"のElementノードの下に"hoge"のTextノードができるだろ?

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

>DocumentBuilderFactory#setIgnoringElementContentWhitespace(boolean whitespace)
ドキュメント見ろ、という話でしたね。ありがとうございます!
208 :デフォルトの名無しさん2011/10/27(木) 23:34:34.82
>>204
そんなキミはjavax.xml.xpath辺りのAPI使うといいかも。

XPathFactory xpf = XPathFactory.newInstance();
XPath xp = xpf.newXPath();
String val = xpf.evaluate("/element", doc); // valに"hoge"がセットされる
210 :デフォルトの名無しさん2011/10/28(金) 10:54:10.60
>>204
<element value="hoge" />
にでもしたらいいのでは。
XML以外だと、JSON で頑張るとか。
205 :1702011/10/27(木) 23:24:09.52
C言語できるにはできるけどJavaで作ったソースをいちいちコピペで翻訳なんて面倒くさいです。
自力で翻訳プログラム作ってみようかなとも思うんでJavaのプログラム解析するパーサとかってないですか?
207 :デフォルトの名無しさん2011/10/27(木) 23:31:05.36
XMLはそういうものだ、というとそうなのかもしれないのですが
その考え方がなんとなくしっくりこないので他のやり方は
ないのかなあと思い質問させていただいた次第です。
212 :デフォルトの名無しさん2011/10/28(金) 13:34:02.26
>>207
XMLにこだわりがないのならYAMLとかJSONとか調べてみると幸せになれるかもね。
211 :デフォルトの名無しさん2011/10/28(金) 11:55:00.14
初心者なのですが質問させてください
オライリーの「Head First Java」という本の中で以下のような問題がありました。

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

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





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

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

ここで質問なのですが、このような内部クラスはたとえpublicであっても使わないほうが良いのでしょうか。
パッケージプライベートとかprotectedなら使うなという意思表示がされていると思うのですが。
225 :デフォルトの名無しさん2011/10/29(土) 11:47:38.65
ちょこちょこアホが湧いてるな。

>>216
特に決まりはないと思う。
自分なら使用する箇所が基盤系か業務系かで分けるかな。
基盤系なら、内部クラスだろうとinternalだろうと必要なら気にせず使う。
業務系なら、基本は使わない。どうしても必要なら、新しいクラスを作ったうえで外部に見せないように利用する。
228 :デフォルトの名無しさん2011/10/29(土) 12:22:58.30
>>216
ソフトウェア工学上、内部クラスを別パッケージから使ってはならないという
慣習はたぶんないよ。
java.text.NumberFormat.Field使っちゃいかんといわれたら困る。
囲みクラスのカプセル性を内部クラスが台無しにするのとかは論外だけど。

老害マネージャーがかわいそうだから内部クラス禁止
という職場もあるそうだが…
231 :デフォルトの名無しさん2011/10/29(土) 13:05:03.85
>>228
うちがまさにそういう職場だ。
1. 無名クラス禁止って言われてGUIのイベント駆動を全部クラス化させられた。
2. メソッド分割禁止って言われて1業務1クラス1メソッド構成。
理由は「客が」理解しにくいから。

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

218 :デフォルトの名無しさん2011/10/29(土) 01:44:05.52
クラスパスにあるjarを巡回してClass.forName()で
アノテーション付いてるクラスを探すことをしています。

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

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

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

原因としては何が考えられるでしょうか??
223 :デフォルトの名無しさん2011/10/29(土) 11:18:50.61
>>221
ソースコードから日本語全部取り除いて一度試してみては
224 :デフォルトの名無しさん2011/10/29(土) 11:46:03.98
>>221
ソースをちょいと見せてみ?
238 :デフォルトの名無しさん2011/10/29(土) 17:02:44.51
>>224 ソースです!!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ImageStep extends JFrame implements ActionListener {
ImagePanel panel; //イメージ描画用パネル
JButton button; //移動ボタン
public ImageStep(String title) {
super(title);
setSize(700, 800);
setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);//[x]ボタンでフレームを閉じる
setLocationByPlatform(true); //開始時の表示位置はOSに任せる
setLayout(new BorderLayout()); //画面の下にボタンが置けるレイアウト
//ファイルからイメージを読み込む ファイル名を指定する。
Image im = new ImageIcon("zeng01.jpg").getImage();
panel = new ImagePanel(im); //パネルを作る
add(panel, BorderLayout.CENTER); //パネルを中央に配置
button = new JButton("移動"); //移動ボタンを作る
button.addActionListener(this); //押された時のアクション指定
add(button,BorderLayout.SOUTH); //下に配置する
249 :デフォルトの名無しさん2011/10/29(土) 19:38:34.29
>>238
実行じゃなくてコンパイルじゃないのか?

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


ちなみに↑はUTF-8でソースファイルを保存してコンパイルしたもの。
Shift-JISで保存したらコンパイルも実行も成功した。
252 :デフォルトの名無しさん2011/10/29(土) 20:01:25.33
>>249
MKEditor,TeraPad,メモ張
どれも間違いなくShift_JISで
保存し、コンパイルしたのですが
やっぱりエラーがでます。

もう一回メモ帳でやってみます。
222 :デフォルトの名無しさん2011/10/29(土) 09:26:10.76
格闘のやりすぎでパソコンのモニターに鉄拳を入れちゃったんじゃないですか?
226 :デフォルトの名無しさん2011/10/29(土) 11:55:53.00
そりゃ日本語全部取っ払えば通るのは当たり前じゃないか
「?」とか
IME変換時に「環境依存文字」て出るのは大抵ダメだった気がする
229 :デフォルトの名無しさん2011/10/29(土) 12:45:51.18
SimpleImmutableEntryって「ネストしたクラス」や「メンバクラス」には該当するけど
「内部クラス」には該当しないからなぁ。
230 :デフォルトの名無しさん2011/10/29(土) 12:54:40.94
EntryインタフェースはMapの内部構造だけどアクセサも用意されてるしいいんじゃないかな。

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

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

客曰く、いちいち他の場所を見にいくのは非効率的だ。一ヶ所で全部網羅してるこっちの方がいい、そうで。
234 :デフォルトの名無しさん2011/10/29(土) 14:46:27.01
>>232
追記。今話したシステムは1業務クラス1メソッドでJavadoc込み4,000行オーバーのファイルサイズ150kとかだよ。
関係者全員が口を揃えて「こんなクソに自分の署名残したくない」ってぼやいてた。
240 :デフォルトの名無しさん2011/10/29(土) 17:10:08.99
日本語が容量食ってるだけじゃね?
241 :デフォルトの名無しさん2011/10/29(土) 17:17:01.29
へんなwebサイトからコピー&ペーストした部分があると
スペース文字や日本語の一部が文字コードおかしくなったりする。

手打ちでソースかきなおしてみ。
244 :デフォルトの名無しさん2011/10/29(土) 17:54:28.83
>>240
>>241

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

原因がさっぱりわかりません!!
243 :デフォルトの名無しさん2011/10/29(土) 17:33:33.96
ログレベルのWARNとERRORの使い分けだけど、
サーバからのエラー通知をログに残して
クライアントでは何事も無かったかのように処理を続行する場合、
エラーなんだから、ERRORレベルでログに残すべき?
それとも、別にクライアント側の動作には
そんなエラー通知など必要ない情報なのだから、WARNレベルでログに残すべき?
253 :デフォルトの名無しさん2011/10/30(日) 00:10:01.12
>>252
せめて名前くらいつけろ
NGするやつが困るだろ?

しょーもない話題で
>>243みたいな良質な質問が流されるのは勘弁してくれ
254 :デフォルトの名無しさん2011/10/30(日) 00:11:00.28
>>243
ログレベルはなん種類使ってて
どーいう運用してるのか?位は書かんと
答えようないな
245 :デフォルトの名無しさん2011/10/29(土) 18:17:12.27
もう一度やりなおせ
MS932…なんてエラーでないぞ
246 :デフォルトの名無しさん2011/10/29(土) 18:34:11.61
メモ帳ANSIでもS-JISでも行けるよな?
247 :デフォルトの名無しさん2011/10/29(土) 18:45:21.95
コマンドプロントじゃなくてEclipseやAntで実行するとか?

いや、もしかしてソースをjavacコンパイルして.classにしないで
.javaのまま実行しようとしてる可能性もあるな
250 :デフォルトの名無しさん2011/10/29(土) 19:55:21.50
あいぽんからすいません>>244です。
いまパソコンが使える環境じゃないので

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

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

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

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

248 :デフォルトの名無しさん2011/10/29(土) 19:05:58.92
マッピングできませんなら実行時に変わったことやってない限りjavacでコケるんじゃないの?
255 :デフォルトの名無しさん2011/10/30(日) 01:02:36.52
プログラム書く以前のとこでつまづく人には
Javaは向いてない。
もっと低級向け言語あるんだからそっち使えばいいのに。
258 :デフォルトの名無しさん2011/10/30(日) 03:17:19.69
どこで質問すればいいのか分からなかったので質問させてください。
行列aをコレスキー分解するプログラムを作ったのですがうまくいきません。どこが間違ってるのでしょうか?ご教授お願いします。
public static void main(String[] args) {
int[][] a = {{1,2,-1,2,1},
{2,5,0,5,4},
{-1,0,6,2,2},
{2,5,2,10,4},
{1,4,2,4,11}};
double[][] l = new double[a.length][a.length];
double sum1=0.0;
              double sum2=0.0;
for(int j=0; j<a.length; j++){
for(int k=0; k<j-1; k++){
sum1 +=l[j][k]*l[j][k];
}
l[j][j]=Math.sqrt(a[j][j]-sum1);
for(int i=j; i<a.length; i++){
for(int k=0; k<j-1; k++){
sum2 +=l[i][k]*l[j][k];
}
l[i][j]=(a[i][j]-sum2)/l[j][j];
}
}
matrix(l,a.length);
}
public static void matrix(double[][]a,int l){
for(int i=0; i<l; i++){
System.out.print("\t[");
for(int j=0; j<l; j++){
System.out.print(a[i][j]);
}
System.out.println("]");     }}
259 :デフォルトの名無しさん2011/10/30(日) 05:32:38.85
>>258

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

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

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

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

  // L[i][j] を計算
  for (int i = j + 1; i < a.length; i ++) {
    double sum2 = 0.0;
    for (int k = 0; k < j - 1; k ++) {
      sum2 += l[i][k] * l[j][k];
    }
    l[i][j]=(a[i][j] - sum2) / l[j][j];
  }
}
263 :デフォルトの名無しさん2011/10/30(日) 13:13:06.31
数学とか見る気にもならないんだけどプログラマ向いてないかな
275 :デフォルトの名無しさん2011/10/30(日) 18:10:05.61
>>263
ばか乙
265 :デフォルトの名無しさん2011/10/30(日) 14:06:21.53
String配列から重複なしでランダムに要素を取り出すにはどうすればいいでしょうか?
例えばString[] s = {"あ","い","う","え","お"};
とあった時、ランダムに
"あ","え","い","お","う" とか "え","お","あ","う","い" という風に取り出したいです
ただし配列のインデックスと文字の対応は崩したくありません
s[0]="あ"、s[1]="い" のままでってことです
267 :デフォルトの名無しさん2011/10/30(日) 14:23:14.43
>>265
インデックスの配列を作ってシャッフルする
268 :デフォルトの名無しさん2011/10/30(日) 15:21:32.57
デフォルトコンストラクタの役割って何ですか?良く分かりません。
コンストラクタは初期化に必要なものだとは分かりますが。
270 :デフォルトの名無しさん2011/10/30(日) 15:44:32.18
>>268
C++と違って、デフォルトコンストラクタに文法上の特別な便宜はたぶん無いよ。
271 :デフォルトの名無しさん2011/10/30(日) 16:00:13.63
>>270
初心者さんちーす
274 :デフォルトの名無しさん2011/10/30(日) 17:10:08.19
>>270
こんにちは
276 :デフォルトの名無しさん2011/10/30(日) 19:57:11.65
Cloneableもいいけど、
コピーコンストラクタに配慮してくれる文法がJava言語にも欲しかったな。

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

俺はXP使いだから知らんけど・・システム規定の文字コードで単純に保存じゃないの?
286 :デフォルトの名無しさん2011/10/31(月) 18:12:24.01
if(you instanceof Pritty)
((Pritty)you).run();
else you.walk();

についてですが、この場合何で(Pritty)のキャストが付くんですか?
youがif()内でtureだったらPrittyクラスなんだから
付けなくて良くないですか?you.run()じゃだめなんですか?
292 :デフォルトの名無しさん2011/10/31(月) 20:47:51.31
>>286
の場合必要ないでしょ
300 :sage2011/10/31(月) 22:16:53.27
>>286
コンパイラが(you instanceof Prity)の結果を覚えていられないから
という理解じゃダメ?
if文の外でもキャストが必要なら、then部でもelse部でもキャストが必要。
304 :デフォルトの名無しさん2011/10/31(月) 22:50:14.54
>>300
キャストが必要な時ってどんな時ですか?
自分はキャスト=型を変換するって理解なんですがダメでしょうか?

例えばxはPrittyクラスなのに、(Pritty)xとキャストする意味が分からなくて・・
306 :デフォルトの名無しさん2011/10/31(月) 22:54:52.84
>>304
分かってるならinstanceofする必要ないじゃん。
314 :デフォルトの名無しさん2011/10/31(月) 23:11:22.26
Prittyクラスは、Humanクラスかなんかのサブクラスじゃないの?
class Pritty extends Human
な感じで。

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

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

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

明快Javaとか言う本は知らない。
324 :デフォルトの名無しさん2011/10/31(月) 23:56:18.03
>>314
いやサブクラスのPritty型でnewでyouを宣言する設定で考えましたが。

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

配列で宣言していて、
普通に本ではPet []aみたいな感じでした。
中のa[i]=new PetRobotの右辺だけ見て判断してました。
すいません。 Pet A[]みたいなところ見逃してました。
自分のミスです。ちゃんとスーパークラスで宣言されてました。
ダウンキャスト必要ですよね。
287 :デフォルトの名無しさん2011/10/31(月) 20:07:43.57
ダメって決まってるからダメ。

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

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

328 :デフォルトの名無しさん2011/11/01(火) 03:17:35.36
>>298
youはPritty型として宣言されてないでしょ、多分。
だからキャストしてあげる必要がある。
299 :デフォルトの名無しさん2011/10/31(月) 22:06:12.95
アーリーバインドするためだろJK
コンパイラさんの役割がまるで理解できてなさそうだな。
305 :デフォルトの名無しさん2011/10/31(月) 22:53:55.13
staticメソッドやフィールドだと隠蔽があるからキャストしないと
どのメンバにアクセスするのか曖昧になる可能性があるな。
308 :デフォルトの名無しさん2011/10/31(月) 23:01:12.95
>>305
すいません、変な部分だけ切り取って質問したんで・・
明快Java入門編の413pなんですけどね、見てくれたら分かると思います。
instanceofの説明が良く分からなくて・・
309 :デフォルトの名無しさん2011/10/31(月) 23:02:39.16
>>308
買って送ってくれ。たぶん見たらわかると思うから。
315 :デフォルトの名無しさん2011/10/31(月) 23:12:36.84
>>308
作者名で検索かけてメールだの本人主催の掲示板だので直接質問すればいいんじゃね?
310 :デフォルトの名無しさん2011/10/31(月) 23:05:17.28
入力ファイルの英文から単語を読み込みたいので
空白や改行、タブを区切りとしてStringのデータを得たいのですが
何か良い手段はないでしょうか?
StringTokenizerやCharaceter.isWhitespaseやら試してみたのですが
この馬鹿には使いこなせない物だったらしくうまくいきませんでした
よろしくお願いします
311 :デフォルトの名無しさん2011/10/31(月) 23:07:21.82
String#split(String)
320 :デフォルトの名無しさん2011/10/31(月) 23:34:32.57
>>311
split(String hoge)のhogeを複数設定することは出来るのでしょうか?
321 :デフォルトの名無しさん2011/10/31(月) 23:38:18.50
312 :デフォルトの名無しさん2011/10/31(月) 23:08:00.00
暗黙のうちにキャスト・・・っていう意味が良く分からない。
313 :デフォルトの名無しさん2011/10/31(月) 23:08:28.73
どう試して
どううまく行かなかったか?
をまず示してもらわないと何とも。
316 :デフォルトの名無しさん2011/10/31(月) 23:15:06.39
>宣言してればHumanのrunメソッドを使っちゃう。
インスタンスメソッドだったら、そんな事にはならんよ。
実際にはPretty#run()でなくてPrettyKid#run()呼ぶかもしれんけど。
319 :3142011/10/31(月) 23:32:53.99
>>316
あれ、そうだった。

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

でいいのか。
318 :デフォルトの名無しさん2011/10/31(月) 23:26:51.66
Eclipse Heliosを使ってプログラムしています

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

FileReaderクラスのreadメゾッドでファイルから読み込みintからcharへキャスト演算子で変換するループを
(Character.isWhitespace(hoge) != true)をWhileの判定式に使って終了させるというのも試しましたが
こちらは空白で読み込みを終了できず失敗しました
322 :デフォルトの名無しさん2011/10/31(月) 23:45:04.56
>>318
catchWordが呼ばれてないような
323 :デフォルトの名無しさん2011/10/31(月) 23:53:52.88
>>321
ありがとうございました

>>322
ありがとうございます
ここで聞く以前のミスですみません
直したら java.lang.IndexOutOfBoundsExceptionが47行目のwhile出でたのでそこも直してきます
327 :3102011/11/01(火) 00:23:44.89
>>322さんのご指摘の後いくつかのエラーと格闘して無事解決しました
アホな質問に付き合っていただきありがとうございました
今後はこのようなことがないように気をつけます
326 :3142011/11/01(火) 00:19:54.88
やだ。自分で考えてください。

キャストしなくても結果が変わらなければ蛇足なキャストなんじゃない?
キャストしなけりゃ結果が変わるんなら何か意味のあるキャストなんでしょ。
331 :デフォルトの名無しさん2011/11/01(火) 07:32:51.82
>>326
キャストしなけりゃコンパイルエラー
キャストすればコンパイル通って実行もできる

なら意味があるんじゃね?
329 :デフォルトの名無しさん2011/11/01(火) 03:25:16.79
youはPritty型として宣言されているんでしょ、多分。
だからinstanceofやキャストは必要ないんじゃないかと疑問を呈している。
333 :デフォルトの名無しさん2011/11/01(火) 13:03:14.37
自作ライブラリ内で使用するデータの一部をシングルトンで定義しました。
そのライブラリを他のアプリでも使えるように修正中なのですが、
シングルトンを継承させるような感じで
動作を定義することって出来ないでしょうか?
340 :デフォルトの名無しさん2011/11/01(火) 18:13:04.15
>>333
継承したくなった時は移譲で実現可能かを検討しろ。
334 :デフォルトの名無しさん2011/11/01(火) 14:34:10.05
できます
335 :デフォルトの名無しさん2011/11/01(火) 14:46:11.59
>>334
では提示してください
337 :デフォルトの名無しさん2011/11/01(火) 17:08:28.11
異次元の会話だな
364 :デフォルトの名無しさん2011/11/02(水) 16:22:38.37
>>337
338 :デフォルトの名無しさん2011/11/01(火) 17:13:07.34
シングルトンをファクトリで生成するように変更。
ファクトリは設定ファイルを見てインスタンスを生成するように変更。
継承クラスを定義。
設定ファイルを継承クラスのインスタンスを生成するように変更。

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

こういう場合ならキャストが必要なことに納得してくれるのかなぁ。
342 :デフォルトの名無しさん2011/11/01(火) 18:55:37.59
>>339
それジェネリックスつかってinstanceofできない時と未チェックでたときと実行時にClassCast例外出たときにパニクるんじゃないか?
341 :デフォルトの名無しさん2011/11/01(火) 18:38:48.68
338のやり方でやってみましたが、
いまいち分からなかったので
移譲する形でやってみます。
ライブラリの設定さえできればいいので、
呼び出す前に設定を渡す形にした方が簡単でした
344 :デフォルトの名無しさん2011/11/01(火) 21:02:27.63
"UTF-8" "Shift-JIS" とかのファイル保存時のエンコーディングの文字列ってどこかに定義されてます?
345 :デフォルトの名無しさん2011/11/01(火) 21:07:53.35
instanceof でオブジェクトの型を確認した後の分岐は(少なくともローカル変数に対しては)
そのブロック内にてその型でアクセスできることは明らかなのに、
なぜ型推論もされず、ダウンキャストがないとその型でアクセスできないの?

っていう話のはず
350 :デフォルトの名無しさん2011/11/01(火) 23:27:02.45
>>345
全く明らかじゃない。論理破綻しすぎだぞw
346 :デフォルトの名無しさん2011/11/01(火) 21:44:59.43
要素がすべて埋まってしまった配列に新しい要素を足す処理を付けたのですが
arrayが既存のClass型の配列でelementが足す要素だとすると

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

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

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

インターフェースMap<K,V>をインプリメントしているクラスで、
public V put<K key, V value)
public void putAll<Map<? extends K, ? extends V> m)
をどのようにインプリメントしているか見てみて、それをベースにトライしてみると、どんなクラスの配列でも引数にできるメソッドが作れると思います。
360 :3492011/11/02(水) 09:06:53.22
>>351-354
超絶暇人さんもご苦労様です。
ググる前になんとな〜く適当な単語並べて聞いただけなんで助言とかどうでもいいです。
死ねウンコ共。
383 :デフォルトの名無しさん2011/11/03(木) 01:57:38.02
こういう>>360みたいな頭が残念な子って
不思議と性根も悲惨なの多いね。
ワンレスで化けの皮が剥がれたり。
356 :デフォルトの名無しさん2011/11/02(水) 02:32:09.92
上の方見たけどこの板ってID無いから自演し放題だな
358 :デフォルトの名無しさん2011/11/02(水) 04:50:10.98
>>356
いじめられたのかい?
359 :デフォルトの名無しさん2011/11/02(水) 05:18:58.65
>>356
スルーできないお子ちゃまなのかい?早くおうちに帰りなさい。
365 :デフォルトの名無しさん2011/11/02(水) 16:30:33.65
GoF以外のデザインパターンで、
使い勝手よさそうなものってある?
GoF以外の物を説明してるのほとんど見たことないから、
いいものがあるなら、教えてほしい
366 :デフォルトの名無しさん2011/11/02(水) 21:43:34.55
転売用にAmazon自動予約スクリプト使いたいけど、パソコンの台数と、回線の数、どっちが大事?
367 :デフォルトの名無しさん2011/11/02(水) 21:43:56.48
すいません、javaを趣味で勉強してるのですが、
あるStringが3行目以上あったら、表示を打ち切りたいのです。

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

ここまで頑張ったのですが、★のif文が解りません。。
どなたがご教授頂けませんか?
373 :デフォルトの名無しさん2011/11/02(水) 22:16:37.42
↑>>367へだた
385 :デフォルトの名無しさん2011/11/03(木) 02:14:46.16
>>367
ご教授くんは日本語をまずなんとかしてくれ。ご教授って。。。
肝心のコードだな一行目からしてイミフ、動かんよそれ。for文もおわらんでしょ。charAtのAPI見直してこい。
などなど酷すぎて目が潰れそうだ。

なによりコンパイラ位使ったあとにに貼れ、と。
405 :デフォルトの名無しさん2011/11/03(木) 13:13:44.41
>>385
ご教授に噛みつく人何人か見かけるけど
別に間違ってるわけじゃないから。
間違ってるのは君の知識の方。
408 :デフォルトの名無しさん2011/11/03(木) 14:20:00.32
>>405=>>367=高卒
415 :デフォルトの名無しさん2011/11/04(金) 03:40:05.41
>>408
院卒だよ。
どこの病院かは教えてあげないけど。
465 :デフォルトの名無しさん2011/11/06(日) 12:05:28.69
>>408
368 :デフォルトの名無しさん2011/11/02(水) 21:48:49.09


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


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




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

x-JIS0208は、5の途中のバージョンから使える?
389 :デフォルトの名無しさん2011/11/03(木) 07:39:25.54
初歩すぎて申し訳ないが、1〜100が入った配列を楽に用意したい

int[] A;

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

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


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

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

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

b[0]の右側と左側どちらにb[1]があるのか、ということが知りたいです。
b[0]の最上位ビットの左側がb[1]の最下位ビットでしょうか
b[9]の最下位ビットの右側がb[1]の最上位ビットでしょうか
411 :デフォルトの名無しさん2011/11/03(木) 16:30:54.46
>>401
ビッグエンディアンかリトルエンディアンかって話?
byte[]はどっちでもないよ。
java.io.DataInput DataOutput はビッグエンディアンだけど。
java.nio.Buffer は自由に指定できる。
412 :デフォルトの名無しさん2011/11/03(木) 18:57:09.03
>>399
元素崩壊による半導体のソフトエラーの話なら、
メモリセル間でどんな誘爆パターンがあってもおかしくない。
417 :デフォルトの名無しさん2011/11/04(金) 08:56:53.11
>>399
おそらく 0000000100000000 じゃないのかな
でないと、b[1] のアドレスが b[0] より小さくなってしまってややこしい
リトルエンディアンなら 1000000000000000 かな
418 :デフォルトの名無しさん2011/11/04(金) 10:43:21.92
>>417
ビッグエンディアンが1000000000000000で
リトルエンディアンが0000000100000000じゃないの?
426 :デフォルトの名無しさん2011/11/04(金) 15:43:54.76
>>399 をイーサネットに流すと 10000000 00000000 だ。
トークンリングに流すなら 00000001 00000000 だ。
PCI-Expressではどうなんだかよく知らん。

スイッチングハブやPCIブリッジを設計する人でもない限り、
LSBより先にMSBを知りたい、とかこだわる人はいない。
正直Javaプログラマにはどうでもいい。
402 :3992011/11/03(木) 12:44:24.91
訂正
× b[9]の最下位ビットの右側がb[1]の最上位ビットでしょうか
○ b[0]の最下位ビットの右側がb[1]の最上位ビットでしょうか
407 :デフォルトの名無しさん2011/11/03(木) 13:44:57.03
俺も教授の使い方は間違ってると思う。
間違ってる高卒が多すぎて、訳が分からなくなってるけど。
423 :デフォルトの名無しさん2011/11/04(金) 15:14:47.08
>>385>>407
どうおかしいのか具体的な指摘が無いのでなんともだけど、
教授に「ご」をつけるのがおかしいっていう意図なら、教授するのは相手なので問題ないよ。
あとは…自分の知ってる教授の意味と違う!っていう意図ならもう一度辞書引いてみて。

どっかで聞きかじった知識なんだろうけど、生まれたての雛鳥じゃあないんだから
初めて聞いた知識をそのまま鵜呑みにするんじゃなく自分で正誤を確かめようよ。
指摘も具体的にしなくちゃ。そんなんだとプログラミングに携わる者として大成しないよ。
441 :デフォルトの名無しさん2011/11/05(土) 00:31:36.97
>>423
恥ずかしい奴だ
453 :デフォルトの名無しさん2011/11/05(土) 10:34:51.52
>>441
409 :デフォルトの名無しさん2011/11/03(木) 15:38:12.09
ま、人に物を頼む態度としては恥ずかしいな。どうでもいいだろうと言う言葉づかいは。
413 :デフォルトの名無しさん2011/11/03(木) 21:27:40.94
面白くないけど笑ってください
425 :デフォルトの名無しさん2011/11/04(金) 15:27:54.66
>>413
420 :デフォルトの名無しさん2011/11/04(金) 10:47:40.34
Javaで簡単に使えるB木の実装ってない?
ASCIIの文字列入れれたらいいんだけど。
421 :デフォルトの名無しさん2011/11/04(金) 10:49:21.24
B木ってなんぞ?
422 :デフォルトの名無しさん2011/11/04(金) 11:08:29.16
>>421
ry
424 :デフォルトの名無しさん2011/11/04(金) 15:19:41.58
×ご教授
○ご教示
427 :デフォルトの名無しさん2011/11/04(金) 16:52:20.05
>>424
だからさ、それだと
×ご教示
○ご教授
と同程度の意味合いにしか読み手には伝わらないんだ。
もうちょっとがんばろう!ね!
436 :デフォルトの名無しさん2011/11/04(金) 21:41:06.87
>>427
どんなアホだよwww
437 :デフォルトの名無しさん2011/11/04(金) 21:59:40.35
>>427
教授と教授の違いなんてググれよksg。いつまでもスレチなことやってんじゃねぇ。
428 :デフォルトの名無しさん2011/11/04(金) 17:33:39.40
「汚名挽回」と同レベルの話
間違いだと言う人もいれば日本語として問題ないって人もいるから別にどうでもいい
433 :デフォルトの名無しさん2011/11/04(金) 20:19:32.19
Javaの言語仕様や歴史的な経緯からの観点から
charAtメソッドの果たす役割とその価値を1年かけて体系的に教えて欲しい
ってくらいで「ご教授」になるかしらん。まだ足りないかな
434 :デフォルトの名無しさん2011/11/04(金) 20:28:31.40
調べもせずに感覚でモノを言ってるなら、その辺でやめとけ。
435 :デフォルトの名無しさん2011/11/04(金) 21:02:54.98
javaって文字列型って何バイトなんですか?
C言語だと'A'だけで1byteでしょ?

439 :デフォルトの名無しさん2011/11/04(金) 23:08:02.67
高卒が増えれば「ご教授」が一般的になるかもしれんし、いいんじゃね?
もっと、堂々と「ご教授」を使おう!
442 :デフォルトの名無しさん2011/11/05(土) 01:10:27.51
「どなたがご教授頂けませんか?」を否定されてレスしてる奴はそろそろ気づけ。そんな話をしに来たのかよw
443 :デフォルトの名無しさん2011/11/05(土) 03:46:02.15
糞スレ保守
518 :デフォルトの名無しさん2011/11/09(水) 17:30:42.45
>>443
445 :デフォルトの名無しさん2011/11/05(土) 03:56:59.96
class my implements Comparable<my>
{
int x,y;
public my(int a,int b)
{
x=a;
y=b;
}
public int compareTo(my arg0) {
if(x==arg0.x)
return y-arg0.y;
return x-arg0.x;
}
}
これが何をやってるクラスかどなたか教えていただけないでしょうか…
446 :デフォルトの名無しさん2011/11/05(土) 07:08:54.73
質問が「何のためのクラスか」という意味なら、そこまでは分からない。

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

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

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

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

 new my(x, y);

で表す事にし、

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

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

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

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

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

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

個人の自由だから別に良いけど
452 :4462011/11/05(土) 10:22:32.84
>>449
n = 3 だとして、山田さん、田中さん、鈴木さんの順に入力すると、
順に p の先頭から埋まっていく。

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

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

>>450
おいおい、おれは >445 に合わせてるだけなんだぜ?
458 :デフォルトの名無しさん2011/11/06(日) 02:35:13.67
>>452
親切にありがとうございます。
なぜyよりxの大小が優先されるのですか?
448 :デフォルトの名無しさん2011/11/05(土) 08:05:36.60
ちょっと何言ってるかわかんないです
472 :デフォルトの名無しさん2011/11/06(日) 19:39:10.34
>>448
454 :デフォルトの名無しさん2011/11/05(土) 11:00:57.33
ご教授について勘違いするスレでJavaの質問をするのはスレチでしょうか?
455 :デフォルトの名無しさん2011/11/05(土) 12:06:36.96
Java 7 のリリース直後に騒がれたバグはもう治ったのか?
Solr では使わないでとか言ってた奴。
457 :デフォルトの名無しさん2011/11/06(日) 01:26:48.68
>>455
言ってた奴だね。
456 :デフォルトの名無しさん2011/11/06(日) 00:32:56.34
Java3DのInterpolatorによるアニメーションで,
回転+移動や,移動+スケール変更など,2つ以上の動きを同時にさせるにはどうすればいいでしょうか?

2つの動きをシーングラフに追加したり,
TransformGroupを個別に用意したりしても,
片方が優先されてしまいます.
462 :デフォルトの名無しさん2011/11/06(日) 09:27:00.31
>>456
Transform3D 同士でをかけ算すればいいんじゃないかな
466 :デフォルトの名無しさん2011/11/06(日) 17:16:38.61
>>462
Transform3Dによる回転や移動を,Interpolatorクラスでアニメーション表示させることは可能なのでしょうか?
463 :デフォルトの名無しさん2011/11/06(日) 10:49:24.85
Swingを利用したいのですが、どんなパッケージライブラリを選べばいいでしょうか?
467 :デフォルトの名無しさん2011/11/06(日) 17:18:35.04
InputStreamってカーソルを戻して最初から読み直すことできないの?
469 :デフォルトの名無しさん2011/11/06(日) 18:13:18.97
>>467
InputStreamのjavadoc読んだ?
473 :デフォルトの名無しさん2011/11/06(日) 19:41:51.69
>>467
mark(int) reset() ぐらいしか。

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

JVMオプションに使用可能なコア数を指定できたりしないかと思って検索してみたけど見当たらず
たぶん、何スレッドあっても1コアで処理するような設定になってしまってる。どこかで。
481 :デフォルトの名無しさん2011/11/07(月) 14:55:42.33
違いっていうか自分で実装したrunを普通に同期的に呼んでることになるな
485 :デフォルトの名無しさん2011/11/08(火) 08:57:53.25
JavaでDBの1レコードを表すクラスを考えます。
テーブルには各種制約(not null, unique, referenceなど)があるのですが、
Java上にこれらの制約を持ち込むのはマズいのでしょうか。
特にそういうのを気にせずにSQL投げてSQLExceptionが発生したら対処するパターンはよく見るのですが。

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

この、「Java上にこれらの制約を持ち込む」というのが、
Java上でどういったことをすることを意味しているのかがわからないんだが。
490 :デフォルトの名無しさん2011/11/08(火) 13:09:00.94
>>487
DBで制約として定義されている内容をJava側でもチェックする感じです。
制約が原因となるSQLの例外が出ない状態までvalidateする実装になると思います。

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

データ保持の都合で設計されたデータベースのテーブルと、
Java の処理の都合で設計された Java のクラスを、
それぞれにとって都合の悪いことを
(なるべく)「持ち込まずに」対応づけられるようにするのが、
ORマッパの目的でしょ。
488 :デフォルトの名無しさん2011/11/08(火) 12:25:58.49
daoにassertかくくらいならたまにみかける。
でもエラー検出したとこでなにかできるわけじゃないしな。
494 :デフォルトの名無しさん2011/11/08(火) 20:23:08.68
>>488-489,491
ありがとうございます。
やはり制約を持ち込むのはNGですね。
491さんの「持ち込まない」という説明がとてもしっくりきました。

お忙しいところレスいただきありがとうございました。
489 :デフォルトの名無しさん2011/11/08(火) 12:41:40.24
結局同じこと(同じデータの制約)の定義を
違う場所(スキーマとJavaのソース)に二つ書くことになるから、
色々問題が生じる。

典型的には制約を変更を加えた場合、
両方を書き換えなければならなくなる。
SQLException で処理していれば、スキーマだけ書き換えれば済む。
(もちろん、いずれにしても結合テストは、変更、再実行が必要になる)
495 :デフォルトの名無しさん2011/11/08(火) 21:51:03.58
これからプログラム(Java)の勉強をはじめようと思って
いま jdk-7u1-windows-i586.exe をDLしてきました。

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

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

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

今までのアプリはたぶん動くけど、
特定バージョンに依存してる可能性もあるので絶対じゃない。
497 :デフォルトの名無しさん2011/11/08(火) 22:40:55.97
winxpは2001年頃のだから10年経っても普通に現役なんだよね。
win95,win98は2005年頃に消滅したから10年しかもたなかってけど、xpはまだ5年はもつつまりjdk8でもサポートするんだろうね。
ubuntuは日本語も完全に整備されてるしideもあるから既にubuntu環境に移行したからwindows platなんてどうでもいいけど。
499 :デフォルトの名無しさん2011/11/09(水) 03:34:40.12
Eclipse動かすだけならいらないけどね
Android環境入れたいのかもしれないし
501 :デフォルトの名無しさん2011/11/09(水) 14:17:50.22
もう少し褒めてください
505 :デフォルトの名無しさん2011/11/09(水) 15:37:39.29
>>501
例えばそれができたとして、

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

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

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

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

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

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

俺の結論としては、staticクラスをラップしたクラスを作るって事になった。
511 :デフォルトの名無しさん2011/11/09(水) 16:36:21.40
>>508
「〜という場合」、というけど、今の Java の仕様では、そもそも、
そういう場合というのがありえないわけだから、対応する必要もないのでは?

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

俺がこの件に関して持った認識はそれだけ
516 :デフォルトの名無しさん2011/11/09(水) 17:06:15.25
>>512
>なぜJavaがこういう仕様になっているかの説明を聞いて、他の実装方法を思いつければと思っていた。

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

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


517 :5022011/11/09(水) 17:18:50.52
>>516
俺が今つくってるものを実装しなきゃいけないから実装方法を思いつく必要があった
502 :デフォルトの名無しさん2011/11/09(水) 15:08:39.86
なんでinterfaceでstaticなメソッドを宣言できないんですか?
なんでinterfaceのメソッドをstaticなメソッドで実装できないんですか?

ユーティリティークラスみたいなものを外部から与えてもらいたい時にどうしたらいいですか?
staticなメソッドを宣言したinterfaceが書ければ実装は外部から渡してもらうという事が出来ます。
504 :デフォルトの名無しさん2011/11/09(水) 15:18:25.48
>>502
ヒント:インターフェースは実装するためのもの
509 :デフォルトの名無しさん2011/11/09(水) 16:16:39.86
っつか、言語仕様まるまるとっかえないと
実装先でstaticメソッド宣言してもinterfaceのstaticメソッドを隠蔽するだけで上書きできんよ?
514 :デフォルトの名無しさん2011/11/09(水) 16:55:47.21
JITコンパイラによるインライン展開の対象にはインスタンスメソッドも含まれる。
(というか、staticメソッドを特別扱いしない)
javacはstaticメソッドだからといってインライン展開したりしない。
515 :デフォルトの名無しさん2011/11/09(水) 17:04:22.53
apiの呼び出しの型(インターフェイス)がわかっている

→ジャヴァの interface を使ってみよう!! という発想?
519 :デフォルトの名無しさん2011/11/09(水) 17:53:52.68

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

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

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

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

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

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

reporter thread
・ConcurrentLinkedQueueよりpoll
・DBに結果を保存
529 :デフォルトの名無しさん2011/11/09(水) 22:43:32.22
orderスレッドが、スレッドプールでagentスレッドを動かす
のはないな。あれこれやりすぎ。
530 :デフォルトの名無しさん2011/11/09(水) 22:45:27.04
>・DBより作業要求を取得
で、orderという命名はないな
531 :デフォルトの名無しさん2011/11/09(水) 22:46:24.09
reporterスレッドは、たぶん価値ないな。
動かしてみないと何ともいえないが。ボトルネックにはならんでしょ。
532 :デフォルトの名無しさん2011/11/09(水) 22:55:05.69
これ、なんで並列に処理しなきゃなんないの?
要求が Web から来るとかなら分かるんだけど、
DBにプールされてるなら、逐次処理してもかまわなさそうな気がするけど。
549 :デフォルトの名無しさん2011/11/10(木) 03:09:22.30
>・同時かつ大量に処理させたい
こんなのが理由なわきゃねえ、そりゃ手段だよ。あってるかどうかも怪しい浅知恵かもしれん。
とりあえず>>532に答えて、今のクラス構成の必然性を説明できるようにしないとね。
で、おそらくそれを試みると今の設計の贅肉が見えてくる。
533 :デフォルトの名無しさん2011/11/09(水) 23:41:37.96
orderはagentに指示(命令)して動かすものってだけで命名してます
(DBからタスクを取得してagentへ渡す)

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

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

コードを書いたのが2年以上前で同様の処理をさせたい案件が最近出てきたので
もっといい案があればとご高説は承りたく質問いたしました
536 :デフォルトの名無しさん2011/11/10(木) 00:17:58.18
>>533
命名センスが致命的に欠落してることはわかった。
司令だすからorderって、あんたそれじゃ全部のクラスがorderになるわ。
546 :デフォルトの名無しさん2011/11/10(木) 02:33:00.15
>>536-537
センスうんぬんは分かってます
だからこそ実装方法について質問しているのですが…
548 :デフォルトの名無しさん2011/11/10(木) 02:55:41.28
おかしなネーミングをまっとうにしていく過程で良い設計が見えてくるよ。

言葉尻とらえるみたいだけど、
実装方法がダメなんじゃない。設計がなってないんだ。
もっというと、要件>>533の整理の仕方がなってない。必然的に伝え方もなってない。
> 決められた時間何に終わらせる
ってなーに?決められた時間が来たらどうすりゃいいのさ?これで伝わると思う方がどうかしてる。
550 :デフォルトの名無しさん2011/11/10(木) 03:29:52.08
>>548-549
要件についてはまず申し訳ありませんでした
具体的に書くとまずい部分もあったので大分濁したの結果、分かり辛くなってしまいました

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

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

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

また行き詰った際には質問をさせて頂くかもしれませんが、その時はよろしくお願いします
遅くまで質問に答えていただき、ありがとうございました
553 :デフォルトの名無しさん2011/11/10(木) 09:30:18.92
>>550
いずれにしても並行処理させなきゃいけない理由がわからない。
その要件を見る限り、どうしても並行処理させる必要があるのは、
要求を受け付ける処理だけのはず(取りこぼしを防ぐため)。

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

もちろん、マルチコアや分散処理で処理効率を上げようとしているなら
話は別だけど、その場合は、構成の是非の判断材料は、
その処理効率を上げるための戦略やシステム構成であって、
それが示されてないとアドバイスのしようがない。
537 :デフォルトの名無しさん2011/11/10(木) 00:22:32.56
> ・DBより作業要求を取得
って要約したくなるようなクラスに
> rder thread
って命名する時点でおわってるってことね。

どうせゴミみたいな設計なんだから、1日くらいかけて再設計・実装しなおせよ。
538 :デフォルトの名無しさん2011/11/10(木) 01:16:59.27
文字列の文字コードをUnicode(UTF-8?)からShift-JISに変換した時、
全角の〜(から)や−(ハイフン)、NEC特殊文字などが?(ハテナ)になります
どうすれば文字化けさせずに文字コードを変換できますか?
551 :デフォルトの名無しさん2011/11/10(木) 08:19:29.11
>>538
windows-31jとかms932使えって話でなくて?
539 :デフォルトの名無しさん2011/11/10(木) 01:18:25.73
まず「?」をとれ。話はそれからだな。
543 :デフォルトの名無しさん2011/11/10(木) 01:30:57.03
だから>>539だな。自分が何してるかすら理解せずに、どうやって問題を解決するんだか。
540 :デフォルトの名無しさん2011/11/10(木) 01:22:43.44
ああ、元の文字コードのところの?(ハテナ)ですね?
Javaのデフォルトの文字コードです
542 :デフォルトの名無しさん2011/11/10(木) 01:27:17.66
うーん、UTF-8でしょうか・・・?
とにかくそれをShift-JISにしないといけないのです
そうしないと出力したファイルをEXCELで開いたときに文字化けするのです
545 :デフォルトの名無しさん2011/11/10(木) 01:37:01.54
俺が浅知恵化も知れないけど
確か「〜」「−」とかは文字化けしちゃうから
replaceで類似文字に変換するべきだったはず
547 :デフォルトの名無しさん2011/11/10(木) 02:50:56.97
回答ほしいなら別のスレ行った方がいいよ。ここはアホしかいないから
552 :デフォルトの名無しさん2011/11/10(木) 08:58:56.14
3Dゲームの行列計算するクラスを5段階で継承したらもうわけわかめ状態で死にたい…。
554 :デフォルトの名無しさん2011/11/10(木) 13:52:02.17
じゃあ矯正しようか
一年間継承禁止、インターフェースだけ使う
555 :デフォルトの名無しさん2011/11/10(木) 16:04:20.54
昨夜、文字化けについて質問した香具師ですが、
SJISではなくWindows-31Jにしたら文字化けがなくなりました。
次の課題としては、JavaMailに機種依存文字を使うのがあります。
UTF-8にすれば一発ですが、どうにかしてISO-2022にしたいです。
どうやればおkですか?
556 :デフォルトの名無しさん2011/11/10(木) 16:12:26.09
自作クラスのメソッドを使う時に、
ついつい戻り値があるのにvoidと勘違いして変数に代入するのを忘れてしまいます。
アノテーションの@Overrideを付けるとオーバーライドしなかったら警告を出してくれるみたいに、
変数に代入しなかったら警告を出すようにすることはできないでしょうか?
564 :デフォルトの名無しさん2011/11/10(木) 21:21:12.63
>>556
自前のアノテーション定義して、
Compiler Tree API使って
そのアノテーションがついたメソッドが
代入式の右側以外で使われてたら警告出すようにする、とか?
557 :デフォルトの名無しさん2011/11/10(木) 18:08:38.92
それがミスかどうかは使う人の意図次第だから無理がある
戻り値を使わないこともある
563 :デフォルトの名無しさん2011/11/10(木) 20:15:24.76
>>557-558
値を計算するスタティックメソッドを作ってるだけであって、メソッドの本質なんて聞いてません。
無いならないでいいです。
558 :デフォルトの名無しさん2011/11/10(木) 18:17:36.75
そもそも何か仕事をしてほしいとか結果が欲しいとか目的があって
メソッド呼ぶんだろ?
その上で戻り値忘れてたってことは戻り値はその目的上要らなかったってことだろ?
じゃあ戻り値無視しても問題ないじゃないか
C言語のエラーコードじゃあるまいし
559 :デフォルトの名無しさん2011/11/10(木) 18:22:11.73
eclipseでjava7使うとコード補完で死にまくるな。
補完候補出すタイミングでビジーになってそのままプロセス殺す
しかなくなるから保存してない変更はパーになる。
hotspotバグの影響があると顕著に出るな。
561 :デフォルトの名無しさん2011/11/10(木) 20:08:42.84
デビルサバイバーオーバークロックで
逆引き悪魔合体表を作ろうかと思うんですが、
どのくらいの修練積めば、プログラミングできるようになりますか?

javaはまだ始めて5日です。
565 :デフォルトの名無しさん2011/11/10(木) 21:30:34.29
どうやったら値を計算するスタティックメソッドの戻り値をわすれるんだよw
567 :デフォルトの名無しさん2011/11/10(木) 21:41:27.36
public static int calcValue() {・・・}
・・・
int value;
・・・
calcValue();
・・・
print value;

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

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

これで角度が求めれるはず…。
>3.14
あれ?みたいな?
574 :デフォルトの名無しさん2011/11/10(木) 23:38:18.26
自作クラスのメソッドを使う時に、
ついつい戻り値があるのに戻り値を代入した変数を使うのを忘れてしまいます。
アノテーションの@Overrideを付けるとオーバーライドしなかったら警告を出してくれるみたいに、
戻り値を代入した変数を使うのを忘れたら警告を出すようにすることはできないでしょうか?

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

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

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

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

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

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

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

無茶ぶりっていうけど、
>拡張forをバンバンに使ってるのに古すぎて拡張forに対応していなかったりとか
>マイナーなUnixオンリーでCygwinもMingwも使えなかったりとか
>C言語と文法が似てて15年も歴史があるJavaですし、
この程度の知識があれば、C知ってる人間に聞きながらやればなんとかなるはず。
587 :デフォルトの名無しさん2011/11/11(金) 12:05:36.55
できの悪い釣り
594 :デフォルトの名無しさん2011/11/11(金) 17:13:41.20
>>586
やっぱりそうなりますよね…。
C言語はだいたいはわかってますが課題のプログラムって言っても数千行くらいあるので
ポチっと一発でCに翻訳されないかなと思ったんですが…。

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

>>587
こういう流れかなと思いまして。
588 :デフォルトの名無しさん2011/11/11(金) 16:31:58.96
phpとJavaを連携したいんですが、以下のようなことはできますか?

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

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

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

(B)でデータを送信、(A)で受け取る、という構造です。
phpを呼び出すところまではうまくいっているようです。
Javaのクラスをphpから呼び出すのはぐぐったらいっぱい出てくるのですが、逆は少なくて…よろしくお願いします。
589 :デフォルトの名無しさん2011/11/11(金) 16:50:55.41
>>588
なにをよろしくお願いされてるのか知れない
591 :デフォルトの名無しさん2011/11/11(金) 16:53:15.79
>>589
確かにそうですね(´・ω・`)すみません
592 :デフォルトの名無しさん2011/11/11(金) 17:05:21.16
HTTPヘッダに結果用のフィールド追加した方が楽なんじゃね
593 :デフォルトの名無しさん2011/11/11(金) 17:09:04.79
XMLでやりとりすべき
595 :デフォルトの名無しさん2011/11/11(金) 17:37:05.57
>>592
phpのheader関数でヘッダーを作り、javaのgetHeaderでそれをgetするということですよね?
なるほどそれならできそうです。

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


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

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

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

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

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

String str1 = "x x1 x2 x3 x4"

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

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

"Y x1 x2 x3 x4"

としたいのですが(x1などは置換しないようにしたい)、
該当する箇所を正規表現で指定できますか?
607 :デフォルトの名無しさん2011/11/12(土) 22:32:38.20
replaceAll("\\bx\\b", "Y") でどう
609 :6062011/11/12(土) 22:46:45.00
>>607
回答ありがとうございます。上記例は達成することができました。

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

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

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

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

としてできました。
617 :デフォルトの名無しさん2011/11/12(土) 23:22:16.63
>>606>>610
replaceAll("x(?![0-9])", "Y")
ってのもいいかもね。
608 :デフォルトの名無しさん2011/11/12(土) 22:39:02.00
public class 紙がないException extends Exception {}
public class ウンコ漏らしたException extends Exception {}

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

public static void main(String[] args) {
 try {
  排便()
 } catch (紙がないException()) {
  手で拭く
 }
}
611 :デフォルトの名無しさん2011/11/12(土) 22:53:55.78
>>608
public class 紙がないException extends Exception {} ←{}内は何もないのは
何故ですか?
612 :デフォルトの名無しさん2011/11/12(土) 22:54:43.23
>>603
引用にやる気がなさすぎて、回答者がやる気なくしたぞ
どうしてくれるんだ。
>>608なんかもコンパイルエラー出る位やる気なくなってるぞ
613 :デフォルトの名無しさん2011/11/12(土) 22:56:10.62
>>611
必要ないからだろ。
あと少なくともこの辺は熟読してこい。
java.sun.com/javase/ja/6/docs/ja/api/java/lang/Throwable.html
614 :デフォルトの名無しさん2011/11/12(土) 23:01:32.14
なんでRuntimeExceptionはExceptionを継承してんだ
チェック例外だけキャッチしたいときはどうしたいいの
616 :デフォルトの名無しさん2011/11/12(土) 23:17:00.13
そういうキャッチの仕方しないから。
その必要が出るのは、おかしなコード書いてるんだと思った方がいい。
618 :デフォルトの名無しさん2011/11/12(土) 23:50:38.33
スレッド内から例外投げれないから
チェック例外をまとめてキャッチしたいけど
非チェック例外はキャッチしたらまずいとかない?
620 :デフォルトの名無しさん2011/11/13(日) 00:01:08.52
ぬるぽとか想定外のことが起きてたら
それをキャッチして何事もなかったかのように処理続けたらまずいだろう
621 :デフォルトの名無しさん2011/11/13(日) 00:03:56.59
ぬるぽのことまで想定する、そんなしっかりした設計を始めから出来るわけないだろボケ
623 :デフォルトの名無しさん2011/11/13(日) 00:07:34.18
>>621
これはアホっぽい意見だな。自分の無知さを呪った方がいい
622 :デフォルトの名無しさん2011/11/13(日) 00:06:25.65
そういう切り分けしたい場合は、
想定内の例外とやらを専用の例外クラス(またはそのサブクラス)にするんでねーの?
628 :デフォルトの名無しさん2011/11/13(日) 00:34:24.34
>>627
そんな時こそJava7のMulti-catchですよ!奥さん!
ってかドルフィンより前でも>>622で充分っしょ?
624 :デフォルトの名無しさん2011/11/13(日) 00:16:46.63
ジャバラーの皆々さんは設計とデザパタの鬼ですから全ての事象について想定済みじゃないとマインドが落ち着かなんですよ
636 :デフォルトの名無しさん2011/11/13(日) 02:09:57.55
>>630,631,633

>>624
667 :デフォルトの名無しさん2011/11/13(日) 14:16:15.04
>>630,631,633,659,660

>>624
625 :デフォルトの名無しさん2011/11/13(日) 00:19:52.99
あれ?「い」が抜けてたw
やっぱり「い」がないだけでも落ち着かないですよねw
626 :デフォルトの名無しさん2011/11/13(日) 00:20:52.35
とりあえず前提条件書いただけの適当なコードでもnullは想定すると思うんだが違うの?
627 :デフォルトの名無しさん2011/11/13(日) 00:30:37.35
ぬるぽを想定すべきと言ってるんじゃなくて
想定外のぬるぽが起きたときはキャッチして握りつぶすべきでないといってるんだけどね

で、↓みたいに何個も同じ例外処理を書きたくないから
Exceptionで一括キャッチしたいけど、それだとぬるぽもキャッチしちゃうのが嫌ってこと。
public void run() {
 try {
  //処理
 } catch(チェック例外1) {
  //例外処理
 } catch((チェック例外2) {
  //例外処理
 }
 ・・・・
 catch(チェック例外N) {
  //例外処理
 }
}
629 :デフォルトの名無しさん2011/11/13(日) 00:50:01.98
ライブラリ全てに渡って、そもそもnullは許容しない設計を推奨する
631 :デフォルトの名無しさん2011/11/13(日) 00:54:10.57
>>629
どう言う意味ですか?
659 :デフォルトの名無しさん2011/11/13(日) 12:07:35.63
ちなみに俺は>>629では無いので>>629の真意はわからんが
null撤廃を一度くらい試みる価値はあると思う、自分の技術力を試す意味でね。
少なくとも、何もわかってない奴がnull判定の汚いコードをまきちらすような
そんな醜態を晒すことがない
630 :デフォルトの名無しさん2011/11/13(日) 00:51:51.47
その理由は?
638 :デフォルトの名無しさん2011/11/13(日) 02:20:10.41
許容しない、の定義を明らかにしないと評価できんな
そもそも参照型の初期値nullだし
640 :デフォルトの名無しさん2011/11/13(日) 03:26:29.63
null赦さないとなんでも例外投げるハメになってtry-catch地獄になるぜよ
642 :デフォルトの名無しさん2011/11/13(日) 03:30:29.27
>>640
はピントずれてる
643 :デフォルトの名無しさん2011/11/13(日) 07:08:02.97
ぬるぽは、全てのnull じゃなくて予期しないnull  ってことでしょ。
644 :デフォルトの名無しさん2011/11/13(日) 08:59:39.67
null許容しないって”物”が無いという状態をどうやって表すんだ
645 :デフォルトの名無しさん2011/11/13(日) 09:01:18.24
物がない状態が必要になるコードを書いてくれたまへ
たぶんアッというまに直されるから
647 :デフォルトの名無しさん2011/11/13(日) 09:11:35.24
>>645
だからListのgetだろ?
648 :デフォルトの名無しさん2011/11/13(日) 09:17:44.86
この場合はList#addが適当だとおも
物が無いことも必要
652 :デフォルトの名無しさん2011/11/13(日) 10:13:45.21
>>647>>648
無いを表現するためにListにnullいれるとか斜めすぎる
仮にそれを使うなら小汚いコードになるのが必至。
そんなことしない。
654 :デフォルトの名無しさん2011/11/13(日) 10:21:29.98
>>652
代替案を示さない反対はただの愚痴。
657 :デフォルトの名無しさん2011/11/13(日) 10:46:38.45
>>652
おまえのレベルがわかったからもういいや
658 :デフォルトの名無しさん2011/11/13(日) 12:04:22.07
>>655
Map#containsKey

>>654と>>657は本気でわかってないっぽい。
釣れるからもう少し様子見してみるか
653 :デフォルトの名無しさん2011/11/13(日) 10:14:22.07
なによりぬるぽだ。
656 :デフォルトの名無しさん2011/11/13(日) 10:30:56.69
>>653
がっだ。
655 :デフォルトの名無しさん2011/11/13(日) 10:29:54.56
じゃあMap#getとかnull要素いれなくてもnull返すけど?
668 :デフォルトの名無しさん2011/11/13(日) 18:39:15.43
来年の4月にある「基本情報技術者」に受かるために、今からjava言語を
どのように勉強すればいいでしょうか?
また、オススメの参考書等を教えていただければ嬉しいです。
669 :デフォルトの名無しさん2011/11/13(日) 18:44:08.91
このスレの全てのレスを理解できるようになるまで
100回位繰り返し読んで理解できないところは調べる

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

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

  addWindowListener(new WindowAdapter() {
   public void windowClosing(WindowEvent e) {
     System.exit(0);
   }
  });
  // TEXT Area
  setLayout(new FlowLayout());
  TextArea b1 = new TextArea("Hello World!!", 30, 60);
  add(b1);
  show();
  (以下省略)
679 :デフォルトの名無しさん2011/11/14(月) 11:30:29.30
一応スレをざっと読んだけどもし既出だったらごめんなさい。
List型のオブジェクトを取得するメソッドなんですけど、


public List<TGoods> getGoodsAll() {

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


eclipse ver3.6.2で、「Type safety: Unchecked cast from List to List<TGoods>」
というwarningが出てしまいます。
@SuppressWarnings("unchecked")を記述すれば、warningを消せるのですが、メソッドすべてのwarningに影響が及ぶので
使いたくありません。
プログラミングで解決できる方法ありますか?
685 :6792011/11/14(月) 15:38:01.66
たびたび申し訳ない。

getHibernateTemplate().find("from TGoods")はObject型じゃなくて、List<TGoods>型を返します。
なので、キャスト不要だと思うのだけど、キャストしないと
「Type safety: The expression of type List needs unchecked conversion to conform to List<TGoods>」のwarning
が出て、(List<TGoods>)でキャストしろと怒られます。
で、キャストすると>>679のwarning。
やっぱりジェネリックスは鬼門だ。
699 :デフォルトの名無しさん2011/11/14(月) 18:29:41.07
>>679
それHibernateTemplate#find(String)じゃないの?
戻り値はListなんだけど
680 :デフォルトの名無しさん2011/11/14(月) 11:45:31.73
public List getGoodsAll()にすりゃいいんじゃない?
681 :デフォルトの名無しさん2011/11/14(月) 11:51:51.93
>>680
ジェネリックを外すと、今度は「List is a raw type. References to generic type List<E> should be parameterized」
のwarningが出るので外せんのです。
682 :デフォルトの名無しさん2011/11/14(月) 12:58:53.61
getHibernateTemplate().find("from TGoods")の戻り値の定義は?
683 :デフォルトの名無しさん2011/11/14(月) 15:13:06.41
>>682
List<TGoods> です。
"TGoods"は普通のbeanでフィールドとアクセッサメソッドだけなんだけど、"String"型にしたとしても同じようにwarningが出るはず。

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

Set<String> hoge = (Set<String>)session.getAttribute("hoge");
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            ここで「Type safety: Unchecked cast from List to Set<String>」のwarning
700 :6792011/11/14(月) 19:14:56.59
>>698,699
確かにキャストは不要だと思うんだけど、キャストしないと>>685のように
「Type safety: The expression of type List needs unchecked conversion to conform to List<TGoods>」
のワーニングが出るんで仕方なく(List<TGoods>)でキャストしてる。

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

感じとしては、コレクション+ジェネリックスでキャストをするとType safetyワーニングが出る。
684 :デフォルトの名無しさん2011/11/14(月) 15:24:42.73
ちなみに、sessionはObject型を返すんで(Set<String>)でキャスト。
getHibernateTemplate().find("from TGoods")もObject型を返します。
687 :デフォルトの名無しさん2011/11/14(月) 16:01:35.45
だめ、ってかワーニングが出る。
「ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized」
689 :デフォルトの名無しさん2011/11/14(月) 16:14:00.82
ためしにこんなコードを書いてみました。

import java.util.*;

class MyClass {

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

class Foo {

 static Object getStr() {

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

^^^^部でワーニングが出ます。
Objectをキャストするとワーニングになるようです。
694 :デフォルトの名無しさん2011/11/14(月) 16:42:21.57
警告されるのって>>689のケースだけ?
698 :デフォルトの名無しさん2011/11/14(月) 18:02:45.62
>>685
返り値が単純なListであって、元からジェネリクス使われてないんじゃない?
List<?> goods = getHibernateTemplate().find("from TGoods");
とするととりあえずは警告防げるんじゃね
結局TGoodsのListでreturnするならキャストは必須だし
Unchecked castのwarningは必ず出る

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

それから>>689は単にFooクラスで返り値にジェネリクス使わずにObjectにしてるからでしょ
ちゃんと記述すれば警告出さずに済む
690 :デフォルトの名無しさん2011/11/14(月) 16:14:22.45
Java7は省略できるようになったよね = new ArrayList<>()みたいに
<>も省略しても警告でないかは知らなんだけど
691 :デフォルトの名無しさん2011/11/14(月) 16:24:33.45
>>690
このPCはJDK6だからかな?
7だと確かにその記述でいけるっぽい。
695 :6792011/11/14(月) 17:23:03.21
>>697
そこだけ。

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

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

書いたけどやっぱり

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

の部分ワーニングが出ました。
692 :片山博文MZ2011/11/14(月) 16:27:44.55
ふふふ、諸君はわたくしに勝てるかな。。。
693 :デフォルトの名無しさん2011/11/14(月) 16:34:17.11
>>692
楽勝。
697 :デフォルトの名無しさん2011/11/14(月) 17:34:40.13
Javaでリフレクションを使わずに
引数を変えることで呼び出す処理を変えるには
(1)のようにswitch文で分岐する、(2)のように処理を実装したクラスを渡す
以外にどのような方法が考えられますか?

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

(2)
public void method(Proc proc, Object obj) {
 proc.execute(obj)
 ・・・・
}
class ProcA implements Proc { ・・・・ }
class ProcB implements Proc { ・・・・ }

マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006
マイクロソフト ワイヤレス ブルートラック マウス Arc Touch Mouse RVF-00006