【初心者】Java質問・相談スレッド118【歓迎】at TECH
 【初心者】Java質問・相談スレッド118【歓迎】 - 暇つぶし2ch127:デフォルトの名無しさん
08/08/14 03:39:42
アクセス修飾子について質問です。

protected:
 同一クラスのインスタンス、またはそのクラスを継承したクラスのインスタンスからアクセス可能。

なし(デフォルト):
 そのインスタンス、または同一パッケージに所属するクラスのインスタンスからアクセス可能。

となっていますが、メンバが「なし(デフォルト)」の場合には、異なるパッケージに存在するサブクラスの
インスタンスからは、アクセスすることができないのですか?

128:デフォルトの名無しさん
08/08/14 03:42:45
うん

129:デフォルトの名無しさん
08/08/14 03:48:49
では、アクセス就職子の序列が

public > なし(デフォルト) > protected > private

となっている参考書は間違いなのですか?

「protected」の場合にアクセスできるものに
「なし(デフォルト)」の場合にアクセスできないので。

130:デフォルトの名無しさん
08/08/14 03:49:10
>>127
protectedは同一パッケージ内のクラスからもアクセス可能。

131:デフォルトの名無しさん
08/08/14 03:50:59
protectedの説明が
> 同一クラスのインスタンス、またはそのクラスを継承したクラスのインスタンスからアクセス可能。
になっているのなら、その参考書の説明は間違い。

132:デフォルトの名無しさん
08/08/14 03:53:18
あー逆だ
public > protected >> なし(デフォルト) private
が正しい。
protectedの方が公開の範囲が広い。

133:デフォルトの名無しさん
08/08/14 03:58:09
public > protected >> なし(デフォルト) private
は、
public > protected > なし(デフォルト)> private
ね。だから、
> となっている参考書は間違いなのですか?
は間違いで正しい。
まとめると、
> となっていますが、メンバが「なし(デフォルト)」の場合には、異なるパッケージに存在するサブクラスの
> インスタンスからは、アクセスすることができないのですか?
は正しい。
> public > なし(デフォルト) > protected > private
> となっている参考書は間違いなのですか?
も正しい。つまり間違ってる。

134:デフォルトの名無しさん
08/08/14 04:13:16
>>130-133
了解です!
ありがとうございます!

135:デフォルトの名無しさん
08/08/14 04:22:01
そんな糞参考書は窓から投げておk

136:デフォルトの名無しさん
08/08/14 05:11:35
糞はおまえw

137:デフォルトの名無しさん
08/08/14 06:24:30
会話が成り立っていない

138:105
08/08/14 10:10:40
>>115
書き込みが入りきるよう縮めていたら消していました。
使い方おかしいですか?
やりたいのはその都度実行する遅延を計算しなおしたいのです。
ここでは止まるのを確認するのに1msで常にやってます。

>>116
printlnでIOがブロック?と書きましたが違ったようです。
↓のように、止まるのは遅延を待機しているのではないかと。
ただその遅延が指定したものでなく、
おっしゃるように戻した時間が経過して戻す以前の時間+遅延になると動くようです。
もしかしたら遅延を指定しているにも関わらず、
内部で時刻を取得し直して計算しているのかとも思うのですが。

スレッド [pool-1-thread-1] (中断中)
Unsafe.park(boolean, long) 行: 使用不可 [ネイティブ・メソッド]
LockSupport.parkNanos(long) 行: 使用不可
AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) 行: 使用不可
DelayQueue<E>.take() 行: 使用不可
ScheduledThreadPoolExecutor$DelayedWorkQueue.take() 行: 使用不可
ScheduledThreadPoolExecutor$DelayedWorkQueue.take() 行: 使用不可
ScheduledThreadPoolExecutor(ThreadPoolExecutor).getTask() 行: 使用不可
ThreadPoolExecutor$Worker.run() 行: 使用不可
Thread.run() 行: 使用不可


139:デフォルトの名無しさん
08/08/14 10:52:28
どなたか>>52(>>99)をお願いします…
何か質問の仕方マズかったでしょうか

140:デフォルトの名無しさん
08/08/14 12:35:08
やっぱ"Ruby"ですよ!

141:デフォルトの名無しさん
08/08/14 13:04:24
>>139
1.2以前でっていう限定がきつい。
古すぎてだれも答えられないと思う。

142:デフォルトの名無しさん
08/08/14 13:10:54
>>141
初心者の宿題出なければ、appletを作っているやつ自体いないのでは

143:デフォルトの名無しさん
08/08/14 13:43:41
■■みんなでサイトつくろうぜwwwwwwwwwwwwwwww■■
「お前ら一緒にサイト作ろうぜwwwwwwwwww」
「2ちゃん越えるサイト作ろうぜwwww」
「仕事無いんだ・・・・・・」
「やろうぜ!」
「みんなでサイトつくろうぜwwwwwwwwww」
URLリンク(gacco.o0o0.jp)
スレリンク(news4vip板)
URLリンク(ex14.vip2ch.com)
興味沸いたらきてください!
======================!! 人材募集中 !!======================
■プログラムを組んでくれる人
 *サーバー側
  言語はRubyかPerlの予定ですが、Perlが有力候補。
  ・チャット
   定期的にクライアントから着信があり、それに対して更新されたチャットのメッセージを返信する程度の能力。じゃなくて機能。
   通信するときのフォーマットは未定。
  ・ログイン・アカウント管理
   ログイン認証、各アカウントの点数などの管理。データベースは未定。
  ・お絵描き
   未定。とりあえず鯖に負担がかからない程度にたまに画像を送信してあげるって感じで
 *クライアント側
  はっきり言って俺もわからね。Ajaxだとかflashだとかjavaだとか。
■機能提案(正しくは人材ではなく、意見?)
 「こんな機能があったら良い!」「こうするともっと楽しくなる!」などの意見募集中。
 挨拶とか気にせずスレにどんどん書き込んでくれればおk
■デザイン
 サイトのデザインを考えてくれる人、作ってくれる人募集中。
 できればphotoshop illustrator使える人(プロジェクト共有しやすいので)


144:デフォルトの名無しさん
08/08/14 14:09:09
>>139
1) java.util.zip 使って外部アーカイブを読める自前の URLStreamHandler 作って、
URL.setURLStreamHandlerFactory してみるとか……
セキュリティマネージャに怒られてダメかもしれんが。

2) 1.1レベルでは互換性の高そうな標準API使う方法だと
1)のアプローチぐらいしかないので、それがダメなら
外部jar使うの諦めるか、互換性諦めるか、音出す事を諦めるか選ぶしかないと思うぞ。

145:デフォルトの名無しさん
08/08/14 14:20:42
たぶんwebで公開のappletじゃないと思うけど、Class.getResouceAsInputStream()とかかな。
javaのデスクトップは、アプレットに適したライブラリが全くなかった他の技術に先を越されたけど、それを補うように進化してきたから、1.2以前だといろいろ出来るわけじゃないよ。


146:デフォルトの名無しさん
08/08/14 15:47:14
回答ありがとうございます!

>>141,142,145
うーんやっぱ今時Appletでしかも1.1縛りなあたりがネックですよねぇ。
自分としては1.2以降のAPI使いたいんですが、MRJに対応しなくてはならない事情があるものでして。
無理そうなら環境によって動作切り替える方向で進めてみようと思います。

>>144
なるほど、URLStreamHandlerは今まで全く見てませんでした。
URL指定をメモリ内のByteArrayInputStreamにリダイレクトできればあるいは、のような感じですね。
光明が見えたような気がしてきました。この方向で色々トライしてみます。

147:デフォルトの名無しさん
08/08/14 16:47:01
ライブラリは進化してきたといってるのに、自作しちゃう人がまた一人・・

148:デフォルトの名無しさん
08/08/14 16:54:55
実行中にアプリから、あるインスタンスがどこから参照されているかを確認する術はあるでしょうか?

149:デフォルトの名無しさん
08/08/14 17:08:10
プロファイラで辿れない?

150:デフォルトの名無しさん
08/08/14 17:28:42
このままライブラリ、というか、部品化が進んでいったら、
やがてプログラマが必要なくなるのではなかろうか?
部品をちょちょいと選択すればプログラムができてしまわないだろうか?
そのとき、元プログラマの人は、どうやって食っていくのだろうか?

151:デフォルトの名無しさん
08/08/14 17:35:50
>>149
稼動サーバーでのみリークが発生するようで、アプリ内で何とかしろといわれているので、
JDTとか見たんですけどまったく理解できずに断念です。
やはりツールを使用しないと無理ですかね・・・

152:デフォルトの名無しさん
08/08/14 17:50:19
日頃の勉強と技術力しだいだなw

153:デフォルトの名無しさん
08/08/14 18:06:26
Swingにベクタ画像(psとかeps)なんかを表示するものはありますか?
探しても見つからなかったので…
ない場合、何らかの形でJPanel辺りに貼り付けて表示する方法はあるのでしょうか?

154:デフォルトの名無しさん
08/08/14 18:07:30
2chで質問するほどだなんて、ひでー職場だな。

155:デフォルトの名無しさん
08/08/14 18:12:13
>>154
俺の職場、それしかなかったけど。。

色々掲示板みてると俺のいた職場がよほどくそだったことがよくわかる。
ここで揶揄されてることが俺の職場ではまさにデフォルトだった。

ろくに経験もないうちから研修(実務にまったく役に立たない)と称して独力(上司は単なる営業社員)でつくらされて
現場にいっても俺みたいなど素人がもう一人。。できるわけねえだろ。。

156:デフォルトの名無しさん
08/08/14 18:47:47
>>110
そりゃあソースコードが複雑で読みにくいという

157:デフォルトの名無しさん
08/08/14 19:56:43
みんなそれでやってきたんだし、おまえの技術力が低いだけじゃね?

158:デフォルトの名無しさん
08/08/14 19:58:43
>>155
おまえが糞だってことが良く分かった

159:デフォルトの名無しさん
08/08/14 20:09:30
匿名メソッドのメリットがいまいち分からないのですが、
コーディング量が少し減ることと、
そのメソッドへ他からアクセスできないこと以外で
何かメリットってあるのでしょうか?
よろしくお願いします。

160:デフォルトの名無しさん
08/08/14 20:10:15
匿名メソッドなんてあったっけ?

161:デフォルトの名無しさん
08/08/14 20:15:04
匿名クラスでした、すみません

162:デフォルトの名無しさん
08/08/14 20:42:09
>>155
それは職場が糞なんじゃなくて、お前が糞なんじゃないの?
なんかお前にはVBの方が向いてるような・・・

163:デフォルトの名無しさん
08/08/14 20:46:24
そういう話はマ板でどうぞ

164:デフォルトの名無しさん
08/08/14 21:44:18
相変わらず、糞だらけのスレですね(^^

165:デフォルトの名無しさん
08/08/14 22:40:07
>>159
・いちいち名前を考えずに済む
・普通の内部クラスは書く場所と使う場所が離れていてわかりにくい

166:デフォルトの名無しさん
08/08/14 23:53:02
fileChooserを利用して、選択したクラスファイルを取得したいのですが

File file = fileChooser.getSelectedFile();
Class cls = file.getClass();

これではうまくできません。
どのようにすれば良いか、どなたか教えてくれませんか?

167:デフォルトの名無しさん
08/08/15 00:32:35
クラスファイルをロードしたいってことか?
class MyClassLoader extends ClassLoader {
public Class<?> loadClassfile(File file) throws いろいろ {
byte[] data = new byte[(int)file.length()];
FileInputStream in = new FileInputStream(file);
new DataInputStream(in).readFully(data);
in.close();
Class<?> cls = defineClass(null, data, 0, data.length);
resolveClass(cls);
return cls;
}
}
という独自クラスローダを作って、
Class<?> cls = new MyClassLoader().loadClassfile(file);
でどうよ

168:デフォルトの名無しさん
08/08/15 00:50:39
>>167
クラスを取得してコンストラクタの分析などをリフレクションを用いて実現させたいんです。

File file = fileChooser.getSelectedFile();
Class cls = Class.forName(file.toString());

とかも試したんですけどうまくいきませんでした…
なにぶん初心者なもので、根本的なことが間違ってる気がしてならないですorz

169:デフォルトの名無しさん
08/08/15 01:44:09
>>168
Class.forNameで渡すのはFileとかのクラスファイルの場所ではなくてクラス名そのもの。
クラスファイルをクラスパスの通っているところから参照できる場所に置いておけばクラス名から探してくれる。
クラス名がfoo.bar.Hogeならクラスパスの通っているところのサブディレクトリとしてfoo、その下にbarという
ディレクトリがあって、その中にHoge.classがあればClass.forName("foo.bar.Hoge")でClassインスタンスが得られる。
クラスパスとは無関係にクラスをロードしたいのならURLClassLoaderを使うのが楽かも。
URLClassLoaderでぐぐればサンプルはいくらでもある。

170:デフォルトの名無しさん
08/08/15 04:09:03
>>167
readFully(data); を使うのは単に趣味ですか?
read(data);とどう違うのかAPI Docs上から分からないんですがご存知でしょうか。

171:デフォルトの名無しさん
08/08/15 04:57:34
readは指定したバイト数全部を読み込むことは保証されていない
1バイトでも読めれば、読み込めたバイト数を返す

readFullyは指定したバイト数全部読み込む
読み込めなければEOFException

172:デフォルトの名無しさん
08/08/15 05:35:43
秒妙な違いですけど、引数がFileなのでreadFullyはやらないほうがいいのでは?
間違ってはないけど、そこで使うのはDataInputの設計目的と微妙に違うような…


173:デフォルトの名無しさん
08/08/15 09:19:21
いつも来ていた糞野郎は死んだか?

174:デフォルトの名無しさん
08/08/15 10:29:51
Thread.currentThread().getStackTrace()でスタック情報が取得できますが、引数インスタンスは取得できません。
引数インスタンスを取得する方法はあるでしょうか?

175:デフォルトの名無しさん
08/08/15 10:39:16
>>174
caller の引数に触りたいって話ならデバッガ使えば?

176:デフォルトの名無しさん
08/08/15 14:05:49
糞はドブに流れていってしまったが?

177:デフォルトの名無しさん
08/08/15 19:18:11
テストについて質問です。
値を返すメソッドなら期待される値と実際の値を比較しますが、
値を返さないメソッドはどのようにテストをすればいいのでしょう。
DBに書き込むメソッドとかなら書き込まれた値をチェックできますが、
例えば以下のようなものです。
・メールを送信するメソッド
・コンソールに文字を出力するメソッド

178:デフォルトの名無しさん
08/08/15 19:46:12
mainって普通プログラムの中でどういう部分を書くものなのでしょうか?
staticだから長いプログラムを書くと面倒になる部分が多いので
mainでは自分のクラスのコンストラクタをnewするくらいにしか使わなくて、
そのコンストラクタの方で色々書くようにしているのですが、どうなんでしょう?



179:デフォルトの名無しさん
08/08/15 19:49:06
テストの基本は事前条件と事後条件が正しいことを確認すること
・メールを送信するメソッド
メールを送信するクラスが正しく呼び出されたかをチェックする

・コンソールに文字を出力するメソッド
これは難しいのでやらない
やる場合は、特定の文字を出力するメソッドのテストとしておいて、
Writerはsetterで設定できるようにしておく
どちらにせよコード中にSystem.outがあるのはウンコ

180:デフォルトの名無しさん
08/08/15 19:51:46
>178
いわゆるエントリポイントってやつだから、外部から起動する時に必要な範囲の処理を行うのが正しい
なので、コンストラクタの方で色々やっているのは正しいよ。
mainに書くべき処理といえば、後はプログラムの実行引数のチェックやデフォルト値の設定。
バグで落ちたときにどうするかの処理とか、そんな感じだろうな

181:177
08/08/15 20:12:33
>>179
> メールを送信するクラスが正しく呼び出されたかをチェックする
これ、もうちょい詳しく解説してくれるとうれしいです。

> Writerはsetterで設定できるようにしておく
なるほど。それなら結構簡単にテストできそうですね。

182:デフォルトの名無しさん
08/08/15 20:22:42
>>177
テストアドレスに送信して、受信して、その内容をチェックすれば良いだけでは

183:デフォルトの名無しさん
08/08/15 21:40:47
>>181
方法は幾つかあるけど、インターフェイスをきってテスト用のオブジェクト(モック)でテストを実行する。
モックなんで実際にはメールを投げずに内部的なステータスを変化させるだけ
テストとしてはステータスが変わった(目的のメソッドが実行された)ことを確認する

完全にJavaMailを使っている箇所などをテストする場合は面倒だけど、EasyMockなんかを利用するしかない。
単体テストで再帰的にやるならばこんな感じ。

後は本当に動くかどうかは開発中は動作確認レベルで済ませてシステムテストでやる

184:デフォルトの名無しさん
08/08/15 22:20:58
ネットワークプログラミングを勉強中なのですが、
サーバ側
public static void main(String[] args){
ServerSocket ss=new ServerSocket(7777);
Socket sock=ss.accept();
BufferedReader br=new BufferedReader(new InputStreamReader(sock.getInputStream()));
System.out.println(br.readLine());
br.close();
sock.close();
ss.close();
}

クライアント側
public static void main(String[]  args){
Socket sock=new Sock(コンピュータ名,7777);
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sock.getOutputStream));
bw.write(br.readLine());
bw.close();
br.close();
sock.close();
}

この二つを実行するとサーバ側で何も表示されません。
クライアント側のBufferedReaderの件を全部消してbw.write("hoge");
とかに直すと、ちゃんとサーバ側のPCでhogeと表示されるのですが、
何がいけないのでしょうか?

185:デフォルトの名無しさん
08/08/15 22:23:09
closeしちゃダメだろ

186:デフォルトの名無しさん
08/08/15 23:50:37
JNIを使ってJavaの引数にクラスを指定し、
C側でクラス内のString型のフィールドにデータを入れようと以下のようなプログラムを書きました。
そしたら半角カナに濁点の文字が文字化けしてしまいました。
こういった場合どのように対処したらいいのでしょうか、ご教授ください!

C側↓
JNIEXPORT jlong JNICALL Java_Test(JNIEnv *env, jclass, jobject obj){
jclass cs = env->GetObjectClass(obj);
jfieldID fid = env->GetFieldID(cs,"strParam" , "Ljava/lang/String;");
env->SetObjectField(obj, fid, env->NewStringUTF("サブキー");
return 0;
}

java側↓
HogeClass hoge = new HogeClass();
 Main.Test(hoge);
System.out.println(
new String( hoge.strParam.getBytes("iso-8859-1"), "MS932")
);


187:もう泣きそう
08/08/16 01:30:05
UNIXの環境変数受け渡しについて
教えて下さい。

シェルスクリプトで設定した環境変数は、JAVA(jarのクラス)側で
読み取れると思いますが、その逆は可能なのでしょうか?

以下を想定しています。
もし可能なら、メソッド名とかを教えて下さい。

-----------------------------------------
#!/bin/bash
export AAA=a.txt

java classA -xm=512m・・・

echo KEKKA1=$KEKKA1 ←これが可能でしょうか?
echo KEKKA2=$KEKKA2 ←これが可能でしょうか?
-----------------------------------------

public void class cassA {
  String aaa = system.getenv("AAA");
  String kekka1 = "data1"; ←これを返したいのです。
  String kekka2 = "data2"; ←これを返したいのです。
  (設定するロジックというかメソッド名・・・)
}

JAVA側の変数をシェルで読み取れれば良いのですが、
もし可能なら、メソッド名とか簡単でもいいのでサンプル例等を
教えて下さい。
もう泣きそうです・・(;-;)

188:デフォルトの名無しさん
08/08/16 01:38:01
何か良くわからんけどファイルに書き出せば良いじゃん
でシェルで読み込めば

189:デフォルトの名無しさん
08/08/16 02:03:52
>>187
通常、子プロセスは親プロセスの環境変数を変えられない。

190:デフォルトの名無しさん
08/08/16 05:21:40
JDBC での Oracle との連携を勉強しようとしていたら
Oracle のサイトに Java関連の Tips が大量に合って助かったのですが
逆に .NET でのサンプルが皆無だったので気になりました
Oracle と Java って何か深い繋がりがあるのでしょうか?
それとも Oracle が Java を一方的に支持してる感じ?

191:デフォルトの名無しさん
08/08/16 07:40:40
>>186
半角かな以外は化けないか確認した?
半角英数はともかく、漢字は化けると思うが。

> env->SetObjectField(obj, fid, env->NewStringUTF("サブキー");
これ UTF-8 渡してるのか?
VisualC++ とかなら env->NewString(L"サブキー", 5) とかした方が。

> new String( hoge.strParam.getBytes("iso-8859-1"), "MS932")
これやると確実に化けるんじゃね?

192:デフォルトの名無しさん
08/08/16 08:49:08
>186
JNI を使ってJavaクラスのパラメータをいじる方法は良く分からんですが、
半角カナというのは、どの文字符号化方式で定義されているものを使うのですかね。

String 内部は UTF-16 (char) 配列です。

193:デフォルトの名無しさん
08/08/16 09:43:02
a

194:デフォルトの名無しさん
08/08/16 11:03:24
interfaceは多重に継承できるんですけど、もしスーパー・インタフェイスと
メソッド名やシグニチャがかぶったら継承できないんですか。
特に他の人が使ったインタフェイスで、
戻り値がかぶったり、戻り値がlongとかだったらどうするのでしょうか。

どうやって回避するんでしょうか?

195:デフォルトの名無しさん
08/08/16 11:27:09
>>194
シグニチャ同じで戻り値型違うのは無理。
シグニチャ同じで戻り値型同じなら実装できるけど、
各interface が別々の振る舞いを期待してる場合は無理。

メソッド名付ける時点で被らないように気をつけるぐらいしかないね。

196:デフォルトの名無しさん
08/08/16 11:30:12
>>194
インターフェースはそもそもシグネチャしか定義しない(定数定義もあるけどここでは無視)ので、多重定義になっても問題はない。
何故なら、同じ名前、同じ引数、同じ返り値を持っている、ということ以外の情報は定義されないから。
実装側で、同じシグネチャなのに異なるインターフェースでアクセスされると違う動作をしなければならない、ということであれば、それは設計が間違っている。

197:デフォルトの名無しさん
08/08/16 11:38:24
>>196
そういう問題じゃなくて、AppendableとStringBuffer.appendのような話をしてるんですけど…

それもjdk1.4以前だとどうやって回避してたんでしょうか。



198:デフォルトの名無しさん
08/08/16 11:41:59
> AppendableとStringBuffer.appendのような話
このケースって、なんか問題あんの?

199:デフォルトの名無しさん
08/08/16 11:48:01
jdk1.4以前

200:デフォルトの名無しさん
08/08/16 11:49:53
1.4以前は Appendableないから問題ないよ。

201:デフォルトの名無しさん
08/08/16 12:02:47
>>197
何が疑問なのかわからん。その例ってインターフェースの多重継承とは何の関係もないじゃん。
一応書いとくけど、インターフェースの多重継承って、
interfece SuperInterfaceA { int hoge(int x); }
interface SuperInterfaceB { int hoge(int x); }
interface SubInterface extends SuperInterfaceA, SuperInterfaceB {}
というものだぞ。

202:デフォルトの名無しさん
08/08/16 12:25:23
>194
こんなのでどうさ。

URLリンク(www.y-adagio.com)

203:デフォルトの名無しさん
08/08/16 12:50:00
classと同じでinterfaceをextends出来るけど、継承」の意味が少し違うようですね。

本当は、自作のインタフェイス interface My_interface{
My_interface append(My_interface); 
}
例えば引数assertチェックありで、
class StringBufferも引数My_interfaceに参加させたいんですけど、
class StringBufferは当然他人が作ったライブラリなので、My_interfaceを実装できません。

今のところifで分岐してるんですけど、こういうときは、どうやれば自作インタフェイスにくわえられるんでしょうか。




204:デフォルトの名無しさん
08/08/16 12:52:20
例えば引数assertチェックありとかの実装で。

205:デフォルトの名無しさん
08/08/16 12:58:17
アダプタパターン

206:デフォルトの名無しさん
08/08/16 13:45:32
アダプタよりもデコレータ・パタンかな

207:デフォルトの名無しさん
08/08/16 13:47:28
>>200
例えばで出してみたんですけど、分かりませんか?
自作したインタフェイスの話しなんですけど・・・

208:デフォルトの名無しさん
08/08/16 13:53:32
なんかでラップすりゃいいじゃん

209:デフォルトの名無しさん
08/08/16 14:15:28
>>203
まず、Javaでは原則として既存のクラスやインターフェースに手を加えることはできない。
該当のクラスがfinalでなければ、サブクラスを作ってそこでimplementsする手はある。
該当のクラスがfinalであれば、自作のクラスでラップするしかない。

210:デフォルトの名無しさん
08/08/16 16:38:08
Listのキャストはエレメントを個別にキャストするしかありませんか?

211:デフォルトの名無しさん
08/08/16 16:38:53
generics 使えば?

212:デフォルトの名無しさん
08/08/16 16:47:37
どうするんですか?

(List<MyClass>)list
のようなキャストが失敗します。

213:デフォルトの名無しさん
08/08/16 16:54:48
自作したインタフェイスを使ってライブラリ作ってんるんですけど、
そこに他人が作ったクラスも参加させるのはどうするんでしょうか?

とういことなんですけど、これだけじゃ何言ってるかわからないと思いませんか。

214:デフォルトの名無しさん
08/08/16 16:57:22
>>213
共有ライブラリとかプラグインとかリフレクションの世界のことかと思った。

215:デフォルトの名無しさん
08/08/16 18:33:05
class MyBig extends BigDecimal {
    MyBig(String v){super(v);}
    public MyBig abs(){return this;}
}

BigDecima.abs()をオーバライドしたいのですが、1.4以前ではどうやるんでしょうか。
negate()と同じく、メソッド名に意味があるので名前を変更できないので何かよい方法はないでしょうか?

216:デフォルトの名無しさん
08/08/16 18:54:57
eclipse の JDT を使ってみようと思ってるんですが,eclipse 上で,
import org.eclipse.jdt.core.dom.*;
などど打っても org.eclipse が見つかりませんというエラーが出てしまいます.

どうすれば解決できますか?

217:デフォルトの名無しさん
08/08/16 19:09:49
>>215
1.4 だと covariant return typeが使えないから public BigDecimal abs()で我慢。
もしくはextends BigDecimalを諦める。

218:デフォルトの名無しさん
08/08/16 19:43:52
finalで参照型変数を宣言した場合、
それはどこを参照するかを固定するという認識で合ってますでしょうか?
その場合、参照先のインスタンスの属性をsetter等を用いて変更されないようにするというのは
不可能なのでしょうか?

219:デフォルトの名無しさん
08/08/16 20:09:15
>>213
SPIのことじゃない?

220:デフォルトの名無しさん
08/08/16 20:37:33
>>218
Immutable な拡張クラス作って属性変更できないようにするとか
不可能じゃないけど変更されないようにできる便利な言語機能はない。

221:デフォルトの名無しさん
08/08/16 20:40:07
>>218
setterを作らない

222:デフォルトの名無しさん
08/08/16 21:36:26
Java を使って組み込み系のソフトウェア(携帯アプリ除く)を作成することはできますか?

223:デフォルトの名無しさん
08/08/16 21:48:51
CDC JavaTVetc

224:デフォルトの名無しさん
08/08/16 23:41:22
>>216
自己解決しました.
プロジェクトをプラグインプロジェクトに変更して,プラグイン依存関係を解決したらO.K.でした.

225:デフォルトの名無しさん
08/08/17 00:25:07
>212
キャストは動的。ジェネリクスは静的かつ、型情報は消滅。

>218
変更させたくないインスタンスは委譲でも使って隠匿すべし。

226:94
08/08/17 01:12:31
94です。だいぶ前で皆さん忘れておられると思いますが、この擦れの方のおかげであの質問は解決しました。
遅くなりましたが、応えてくださった97さんや99さんなど、皆さんありがとうございます。

・・・すいません。それだけです。

227:デフォルトの名無しさん
08/08/17 01:27:37
どうせならどのように解決したかを書いてくれると、後から読む人のためになって良い

228:デフォルトの名無しさん
08/08/17 12:55:58
スタンドアロンのJavaアプリで、HTMLのクリッカブルマップのようなことは、可能でしょうか?
具体的には、フォーム上に日本地図の画像があって、
各県をクリックすると、ポップアップウィンドウが表示される、
みたいな感じなんですが。

229:デフォルトの名無しさん
08/08/17 13:00:47
非常に簡単

230:デフォルトの名無しさん
08/08/17 19:59:57
このスレには親切な人が多いですね。たまにマ版と間違えてるような変な人もいますが・・・・

231:デフォルトの名無しさん
08/08/17 20:34:20
マと何か区別しなきゃいけないのか?

232:デフォルトの名無しさん
08/08/17 21:23:11
>>231
愚痴を書き込むスレではないだろ

233:186
08/08/17 21:28:01
なんとか解決したっぽいです。
初心者なので、UNICODEとUTF8の違いとかいまいちピンときませんが、
イメージは「UNICODEがIDとしたらUTF8はIDをUTF8という形式で表現したデータ」ということでしょうか?
間違ってましたら指摘してくださいorz

で、UTF8での受け渡しを止めてUNICODEでの受け渡しをするようにしました

C側↓
JNIEXPORT jlong JNICALL Java_Test(JNIEnv *env, jclass, jobject obj){
jclass cs = env->GetObjectClass(obj);
jfieldID fid = env->GetFieldID(cs,"strParam" , "Ljava/lang/String;");

const char* cc = "サブキー";
int unicodeLength = MultiByteToWideChar(CP_ACP, 0, cc, strlen(cc), NULL, 0);
WCHAR* unicodeBuffer = new WCHAR[unicodeLength];
MultiByteToWideChar(CP_ACP, 0, messagetmp, strlen(messagetmp), unicodeBuffer, unicodeLength);
jstring strj = env->NewString((jchar *)unicodeBuffer,unicodeLength);
env->SetObjectField(obj, fidsData, strj);
return 0;
}

java側↓
HogeClass hoge = new HogeClass();
Main.Test(hoge);
System.out.println( hoge.strParam );

ちゃんと表示できてるみたいです。
しばらくはまってたのですが、「sizeof」で文字サイズを取得してたのですが、
マルチバイト?では使えなくて「MultiByteToWideChar」を使用しないといけないということですね。今までjava言語しか触ったことないのでしたorz
もっと簡単な方法ありましたら是非ご教授くださいm(__)m


234:デフォルトの名無しさん
08/08/17 21:41:51
>>233
wchar_t wcstr[] = L"サブキー";
jstring strj = env->NewString((jchar *)wcstr, sizeof(wcstr) / sizeof(wchar_t));

Windows環境っぽいので wchar_t が UTF-16 きめうち。
テストしてないので動かなかったらごめん。
あと new WCHAR[unicodeLength] したのに delete しなくていいんか?

235:デフォルトの名無しさん
08/08/17 22:02:02
>>233
いくら夏とはいえ、ちょっと見にコンパイルを通らないコードを貼るやつって、何がしたいんだろうな・・・

236:デフォルトの名無しさん
08/08/17 22:12:35
初心者ってのはそういうもんさ

237:デフォルトの名無しさん
08/08/17 22:24:06
おい、おまいらJavaでアップロードされたファイルのヘッダ検査を行なうjarはないですか?
教えてください。お願いします。

238:デフォルトの名無しさん
08/08/17 22:27:44
調子のんな

239:デフォルトの名無しさん
08/08/17 22:33:02
やっぱC#スレの方がいいわ

240:デフォルトの名無しさん
08/08/17 23:14:57
javaのvmって sun と ibm と hp の3種類?

241:デフォルトの名無しさん
08/08/18 00:00:16
Swingを使ってGUIを書いています。
所謂非矩形ウィンドウを作りたいと思い、検索してみたところ、
1. Mac限定の方法(背景色を透過色に設定?)
2. ウィンドウの下をキャプチャして疑似透過
の二つがあるらしい、ということを知りましたが、1番は問題外、
また、最前面に表示するような仕様のため、2番では背景と矛盾が
生じない為の頻繁な更新による負荷がやや重めになってしまいます。
もし他に方法がありましたら、参考URL等を教えてください。

#具体的には、Officeに出てくるうるさいイルカみたいな感じで、
#画像を枠無しで表示したいと考えています
#SWTだとRegionとやらで実装できるようなのですが...

242:デフォルトの名無しさん
08/08/18 00:06:32
jdk7を待った方がいいんじゃないかな?
URLリンク(jdk6.dev.java.net)
確かこれでShapeを使った非矩形ウィンドウが作れたはず・・

243:デフォルトの名無しさん
08/08/18 00:29:07
修飾子の読み方を教えて下さい
Gooleしても見つかりません

244:デフォルトの名無しさん
08/08/18 00:31:38
そりゃ見つからないわ

245:241
08/08/18 00:32:08
おぉ。どうもありがとうございます。
AWTUtilitiesとやらで非矩形や透過ウィンドウが実装出来るようになるのですね。
とりあえずはBeta使って仮実装したり、他の方法も色々工夫したりしてみながら
のんびりと正式版のリリースを待つことにします。

素早いご返答、ありがとうございました。

246:243
08/08/18 00:38:37
Googleの間違いでした

ほんと修飾子って何て読むんですか?

247:デフォルトの名無しさん
08/08/18 00:51:09
おもしろい回答できないわ。
「しゅうしょくし」だよ。

248:デフォルトの名無しさん
08/08/18 00:51:29
jdbcのPreparedStatementなんですが、
setLongに高いインデックス(10くらい)を指定すると、
executeUpdateでエラーが発生するようです。
要は、INSERT INTO文のVALUESに指定できる?の数に制限が
あるということなのですが、この問題にはどう対処したらよいでしょうか。

249:デフォルトの名無しさん
08/08/18 00:51:51
「しゅうしょくし」

ってか流石にこれはガチで小学生でも分かるから、
そういう意味ではなくvolatileとかstrictfpとかの読み方を聞いてるのか?

250:デフォルトの名無しさん
08/08/18 01:01:29
特殊なデザインのウインドウは、はっきり言って使いづらいからやめて欲しい

251:デフォルトの名無しさん
08/08/18 01:04:32
しゅうしょくしがしょくしゅにしか見えないんだが・・・

252:243
08/08/18 01:10:03
>>247
>>249

ガチで有難うございます
ほんと何て読むか解らなくて…

年は40なんですが、趣味でプログラムでも始めてみようかと思い
創るJavaって本を買いまして、暇暇に読んでます

もちろん仕事はプログラムとは
あまり関係ありません

ただ、知識は無いと
指示が出来ないんですよね…

253:デフォルトの名無しさん
08/08/18 02:14:27
>252
URLリンク(www.okapiproject.com)

254:デフォルトの名無しさん
08/08/18 09:39:00
>>252
ではオジサン相手に手取り足取り教えてやろうか。

255:デフォルトの名無しさん
08/08/18 09:41:55
むしろ中途半端な知識で指示される方が迷惑

256:デフォルトの名無しさん
08/08/18 09:48:07
>>252
老婆心ながら
読むだけじゃだめだぞ

257:デフォルトの名無しさん
08/08/18 11:54:15
Javaなんかネットの勉強サイトで十分しょw

258:デフォルトの名無しさん
08/08/18 11:56:17
じゃう゛ぁ♪じゃう゛ぁ♪
じゃう゛ぁじゃう゛ぁジンジンジーン♪

259:デフォルトの名無しさん
08/08/18 12:07:08
ConcurrentSkipListSetってクラスつかったら
プログラムを実行するたびに
同じ要素が何個も一つにセットに入ったり、一つだけ入ったりしたんだけど。
なぜですか?
TreeSetにしても同じような症状でした。
でもCopyOnWriteArraySetにしたら同じ要素は一つしかありませんでした。
どうしてかおしえてください。

260:デフォルトの名無しさん
08/08/18 12:50:32
初心者の質問ですいませんが教えてください
javaにはオペレーターは無いはずですが
なぜStringクラスだけ+=が使えたりするんでしょうか
どなたかおしえてください

261:デフォルトの名無しさん
08/08/18 12:51:46
組み込み

262:デフォルトの名無しさん
08/08/18 13:42:50
Instrumentを変更してMIDIを再生したいのですが、現在使用可能なSynthesizerがcom.sun.media.sound.MixerSynthだけで、そのSynthesizerでloadInstrument()してもIllegalArgumentExceptionを投げられてしまいます。
ソースを読んでみると、MixerSynthの親の抽象クラス「AbstractPlayer」にて、型のチェックでHeadspaceInstrumentの子クラスじゃないと読み込めないようにしてあるようなのです。
さらにそのHeadspaceInstrumentというのはデフォルトアクセスで、どうしようもないのです。

どのようにすればInstrumentを追加・変更できるのでしょうか?

263:デフォルトの名無しさん
08/08/18 14:01:48
>>259
日本語で

264:デフォルトの名無しさん
08/08/18 15:17:26
>>260
> javaにはオペレーターは無いはずですが
Javaにはオペレータが結構あります。
Stringクラスだけでなくintでも+=が使えます。
クラス型に対するオペレータでも=や==はStringクラス以外でも使えます。

265:デフォルトの名無しさん
08/08/18 15:56:23
javaってcみたいにコアダンプ(メモリダンプ)できないのでしょうか。
cの場合ログから解析が難しい場合はその段階でkill -SEGVでメモリダンプしてデバッガでメモリの情報を調査するという方法があり
それをjavaでもやりたいと思っているのですが。
eclipseで接続できないところなので、そこでダンプを取って持ち帰ってeclipseで確認したいと思っていますが、
cのようにいかないですかね???

266:デフォルトの名無しさん
08/08/18 16:19:55
java vmのコアダンプを追いかける・・・言ってみただけ

267:デフォルトの名無しさん
08/08/18 16:45:23
class Oya{
public void show() throws Exception{
System.out.println("oya");
}
}

class Ko extends Oya{
public void show(){
System.out.println("ko");
}
}

public class Cui{
public static void main(String args[]){
Ko a=new Ko();
Oya b=new Ko();
a.show();
b.show();
}
}

これでb.showでエラーが出るのが理解出来ません。
bはサブクラスでオーバーライドされた方のメソッドを呼び出しているので
やっていることはa.show()と同じ気がするのですが、何ででしょう?

268:デフォルトの名無しさん
08/08/18 16:47:40
>>265
VisualVM とか jhat を調べてみるといいかも

269:デフォルトの名無しさん
08/08/18 16:52:39
>>262
URLリンク(www.jsresources.org)

270:デフォルトの名無しさん
08/08/18 16:56:53
>>267
Oya#show は Exception を投げると宣言しているので、
main の b.show() が投げる Exception をどうにかする必要がある
(実際には投げられないのだとしても、宣言してる以上、処理しないとだめ)

271:デフォルトの名無しさん
08/08/18 17:09:06
>>270
これって親のメソッドが仮に例外投げないとしたらコンパイルが通って
b.showの実行結果は「ko」になりますよね。

Oya#showはKo#showで消されているため例外投げる部分が無いものになる気がするんです。
素直にKo#showを使ったa.showは例外処理必要無いのに、
なんでOyaの参照で間接的にKo#showを使うと例外処理が必要になるんでしょう?

272:デフォルトの名無しさん
08/08/18 17:21:08
>>271
b は Oya だと宣言してるし。

273:デフォルトの名無しさん
08/08/18 17:24:36
javaの勉強中でEclipseを使ってプログラムを作り、JSP→クラスの遷移はできるのですが、html→クラスの遷移ができません。
内容はどちらもボタンを押すとデータの送信などは行わず遷移するだけなので、どちらも同じ記述をしているのですがhtml→クラスがうまくいきません。
JSP→クラスの設定はweb.xmlで記述しているのでhtmlだとweb.xmlが読み込まれないのが原因なのではないかと思っているのですが、web.xmlが使えないとなると解決方法がわかりません。
どうすればよいのでしょうか。

274:デフォルトの名無しさん
08/08/18 17:25:47
>>272
そのOyaの関数がKoの関数になってるからってことを疑問にしてるんでしょ。

275:デフォルトの名無しさん
08/08/18 17:28:50
>>271
b が Oya 型だから b.show は単純に Oya#show の宣言を見る

Oya b = new Oya();
のときと
Oya b = new Ko();
のときで b.show のエラーの有無が変わってはかなわんし
(b は同じ Oya 型。単に初期値が違うだけ)

もし
Oya b = null; とか
Oya b = hoge(); とか
Oya b = x < 10 ? new Oya() : new Ko();
とかだったらどうするよ

276:デフォルトの名無しさん
08/08/18 17:43:48
>>272,>>275
レスありがとうございます。
宣言はスーパークラスの方を見て中身はサブクラスを見てる感じなんですね。
オーバーライドで引数とか全部一緒だからそんなことも出来るのか。

277:デフォルトの名無しさん
08/08/18 17:45:55
>bはサブクラスでオーバーライドされた方のメソッドを呼び出しているので

というのが分かるのは 275 が書いたように実行時なんだな。
コンパイル時は宣言した型でしか見てないんだな。

278:デフォルトの名無しさん
08/08/18 19:39:27
>>264
> >>260
> > javaにはオペレーターは無いはずですが
> Javaにはオペレータが結構あります。
> Stringクラスだけでなくintでも+=が使えます。
> クラス型に対するオペレータでも=や==はStringクラス以外でも使えます。
例えば
public AnyClass{
int n;
String s;
public AnyClass()
{
n = 0;
s = null;
}
public AnyClass(int num,String str)
{
n = num;
s = str;
}
}
みたいなクラスがあったとして
下記のような動作させるにはどうすれば良いのでしょう
AnyClass obj1 = new AnyClass(10,"ab");
AnyClass obj2 = new AnyClass(1,"c");
AnyClass obj3 = new AnyClass();
obj3 = obj1 + obj2;

279:デフォルトの名無しさん
08/08/18 19:56:30
>>278
演算子の多重定義はサポートしてないから無理。

280:デフォルトの名無しさん
08/08/18 22:19:35
>278
public AnyClass plus(AnyClass other)

281:デフォルトの名無しさん
08/08/18 22:21:10
>>280
演算子のオーバーロードがしたいって言ってるんじゃないの?

282:デフォルトの名無しさん
08/08/18 23:04:54
>>260
× Javaにはオペレータは無い。
○ Javaにはオペレータのオーバーロードはできない。

で、Stringには連結オペレータが予め用意されている、と。

なぜ連結オペレータが用意されているかは設計者にでも聞いてくれ。

283:x
08/08/18 23:28:03
初めまして。最後のdrawLineでintを使えないといわれてしまいます。
分かる方いらっしゃいますか?
よろしくお願いします。


import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.awt.Font;
import java.math.*;


/**
* @param args
*/
public class applet5no1 extends Applet
{
public void paint(Graphics g)
{

int x1,y1,sec;
sec = 30;
x1= 6*sec;
g.drawLine (100, 100,100+70*Math.cos(60 * Math.PI/180) , 100-70* Math.sin(60 * Math.PI/180));

}
}



284:デフォルトの名無しさん
08/08/18 23:31:43
intが使えないから適切な型に変換しろってこと

285:x
08/08/18 23:33:27
すいません。具体的にはどうするかわかりますか?

286:デフォルトの名無しさん
08/08/18 23:43:49
>>283
sinとかcosの結果はdouble型
drawLineの引数はint型
なので型が合わない
intに変換しる

287:x
08/08/18 23:45:02
ありがとうございます。助かりました

288:x
08/08/18 23:59:08
先ほどのものです。
いろいろ試したのですが、どうしてもうまくいきません。
具体的にどうすればいいか教えてもらえませんか?


289:x
08/08/19 00:13:44
いろいろ試したというのは嘘で、試そうにもやり方が全く分からないので、手取り足取り教えてくれませんか。
いろいろ試したのなら、どう試したけれど、どううまくいかなかったが書けるはずなのに、
それができないから嘘がばれると思ったので正直に書きました。

290:デフォルトの名無しさん
08/08/19 00:15:58
お前馬鹿だろ
リファレンス見るとかググるとか思いつかないのか
そんなことだと永久に2chに聞きに来るつもりか?

291:x
08/08/19 00:20:42
リファレンスってなんですか?どこにあるのか分かりませんし、見方が分かりません。
ググろうにも何をキーワードにすればいいか全然思いつきません。
ここは初心者にきびしいネットワークですね。

292:デフォルトの名無しさん
08/08/19 00:22:10
>>291
君がゆとり杉なのかもね。

293:デフォルトの名無しさん
08/08/19 00:33:40
実は趣味でプログラムしてます。今42歳でニーとですす。

294:デフォルトの名無しさん
08/08/19 00:35:30
>>291
URLリンク(java.sun.com) からJava SEのリンクを辿っていけばそのうちに辿りつけますよ。
画面左上はパッケージのリスト、左下にクラスのリスト、右がメインビューワとなっております。
防御スクリーンを展開したままフェイザーと光子魚雷の準備を抜かりなきようお願いもうしあげます。

295:デフォルトの名無しさん
08/08/19 00:36:09
>>293
名前のxが抜けてる抜けてる

296:デフォルトの名無しさん
08/08/19 00:48:39
>>291
・貴方が書いている言語はきっと“Java”
・二人も“変換”しろと言っている

いくら考えても無いところからキーワードを思いついたりしないだろうな、すでに書いてあるのに……


297:デフォルトの名無しさん
08/08/19 00:56:37

初心者

【人々】
(1)
・「覚えよう」と言う意思の無い人。
・こう言う人は、永遠の初心者。

(2)
・全てをチャラにできる魔法の言葉。
・質問をする時にこの言葉さえつければ、何を聞いても良いと勘違いしている方がいらっしゃる。
・「初心者なら、そういう難しい事は考えずにまずは基本を覚えなさい。」と、言いたくなる事がある。 でも、お客さんだしそんな事は言えないしなぁ・・・。

某辞典から
いや誰とは言わないけどね

298:デフォルトの名無しさん
08/08/19 00:57:21
Sun SPOTの話題はどこに持ってけばいいんでしょ?

299:デフォルトの名無しさん
08/08/19 00:59:36
初心者なんですけど、ジャヴァってなんですか?アップレットとどう違うんですか?

300:デフォルトの名無しさん
08/08/19 01:04:25
>>299
じゃう゛ぁ(java)は今をときめくニューウェーブ、時代の最先端を行く今注目のプログラミング言語です。

アプレットはIEやFF上で動作するJavaプラグインを用いた実行形態の一種です(?)
Applet/JAppletクラスを用いて作成します。

通常のJavaアプリはApplet/JAppletクラスを使いません。

301:デフォルトの名無しさん
08/08/19 01:18:53
アプレットでフラッシュみたいのはやんないんですか?
何でみんなフラッシュ使うんでしょうか。
初心者なんですけど、フラッシュの方が最先端な気がします。

302:デフォルトの名無しさん
08/08/19 01:23:00
スレの無駄だからそろそろ初心者ごっこはやめろ
誰も本気で釣られんよ

303:デフォルトの名無しさん
08/08/19 01:28:02
初心者だからって馬鹿にしないで下さい!

304:デフォルトの名無しさん
08/08/19 09:41:23
ActionScriptも多少触ったけど、言語仕様がルーズ(型の扱いとか)なのと
根っこのトコの動作が見えにくいのとでなんかやり辛いんだよなぁ
マルチスレッドが普通にできないのもめんどい

グラフィックやサウンド系の扱いが手軽なのと、プラットフォームの普及度から言うと
よっぽど複雑な処理やるんでもなければFlashでやるのがいいでしょうね

305:デフォルトの名無しさん
08/08/19 10:00:45
アプレット技術はそのままで、ブラウザ埋め込みレットとしてアプレットを拡張すればいいんじゃないかと思う。
それこそアプレット・アプリケーション・フレームワークが整備されればいいのかな。スウィングと同じように。

306:デフォルトの名無しさん
08/08/19 10:20:26
javaのpipeってLinuxのmkfifoでできる名前付きパイプを実現するものでしょうか?

307:デフォルトの名無しさん
08/08/19 10:32:26
java.nio.channels.Pipe の事なら、そもそもプロセス間通信できなかったような

308:デフォルトの名無しさん
08/08/19 16:34:14
アプレットをいろいろといじっているのですが、ボタンを付けることについて質問です。
ボタンを押されるたびに、たとえば"A"という文字を表示するxとy座標を変えて行きたいのですが、
public void actionPerformed(ActionEvent e){
if(e.getSource() == btn){;
x+=20;
y+=20;
repaint();
}
}
とすれば、g.drawpaint("A",x,y)がリペイントされて、ボタンを押されるたびにx,yが20ずつずれて表示されると思っていたのですが
最初に押したときはxとyが20ずつ動いたのですが連続してボタンを押しても変わることはありませんでした。
押すたびにずれるようにするにはどうすればいいでしょうか?
よろしくお願いします。

309:デフォルトの名無しさん
08/08/19 16:39:47
きっと何処かで毎回xとyを0にしてるんだな

310:デフォルトの名無しさん
08/08/19 17:03:31
最初にボタンを押したときは動くのでx,yがリセットされていることは無いと思うのですが、
class MyFrame extends Frame implements ActionListener{
Button btn;
int x = 50,y=50;
public MyFrame(String title){
setTitle(title);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

}
public void paint(Graphics g){
btn = new Button("ボタン");
btn.addActionListener(this);
add(btn);
btn.setBounds(120,200,90,30);
g.drawString("A",x,y);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == btn){
x=x+20;
y=y+20;
repaint();
}
}
}
これはフレームになっていますが、基本的にかんな感じです。

311:デフォルトの名無しさん
08/08/19 17:06:57
なんでpaintのたびにボタンが増えてるの・・?

312:デフォルトの名無しさん
08/08/19 17:32:02
すいません。ボタンが増えてました・・・paintから出したら上手く動きました。
有難うございました。

313:デフォルトの名無しさん
08/08/19 17:59:23
Object.classって何?

314:デフォルトの名無しさん
08/08/19 18:13:30
>>313
Object クラスを表す Class クラスのリテラル
new Object().getClass() と同値

315:デフォルトの名無しさん
08/08/19 18:52:33
>>314
㌧クス

316:デフォルトの名無しさん
08/08/19 19:08:49
メモ帳から、改行やスペースを含む文字列を読み込んで、char型の配列に入れるというものを作りたいのですが、うまくいきません。
String型の配列に入れる事は出来たのですが、Char 型に変換することができませんでした。以下は私のソースプログラムです。
public class Main{
public static void main(String[] args){
List<String[]> list =new ArrayList<String[]>();
String cell[]=new String[1000];
try{
FileReader fr =new FileReader("test.txt");
BufferdReader bf =new BufferedReader(fr);
String st =null;
while((st= bf.readLine())!=null){
String[] line=st.split("");
list.add(line);}
for(String[] values: list){
for(String value: values){cell[i]=value;i=i+1;}}
}catch(IOException e){}}}

317:デフォルトの名無しさん
08/08/19 19:37:16
>316
Stringオブジェクトからcharを取り出す方法があれば良いのかな
> char java.lang.String.charAt(int index)

それから、BufferedReader を使うと改行が消えるのでご注意あれ。

318:デフォルトの名無しさん
08/08/19 19:39:19
String.toCharArray()っていうそのまんまなメソッドもあるよ!


319:デフォルトの名無しさん
08/08/19 21:19:33
BufferedReader#read(char[] cbuf, int off, int len)じゃイカンのか

320:316
08/08/19 21:23:12
ありがとうございます。アドバイスを踏まえ以下のように改良したのですが、
1行しか読み込むことができません。バッファを使っているせいかとも思ったのですが、バッファを消すとエラーになってしまいます。
public class Main{
public static void main(String[] args){
List<String[]> list =new ArrayList<String[]>();
Char cell[]=new Char[1000];
try{
FileReader fr =new FileReader("test.txt");
BufferdReader bf =new BufferedReader(fr);
String st =bf.readLine();
for(int i=0;i<100;i++){
cell[i]=st.charAT(i);
System.out.print(cell[i]);}
}catch(IOException e){}}}

321:デフォルトの名無しさん
08/08/19 22:15:13
readLineを1回しか呼んでないような気がするが

322:320
08/08/19 22:48:51
>>321
確かに・・そうですね・・
でも、どうすればいいでしょう・・;;

323:デフォルトの名無しさん
08/08/19 23:23:47
ファイル全体を1個のchar配列にすればいいのか?これでどう?

BufferedReader reader = new BufferedReader(new FileReader("test.txt"));
StringBuffer buffer = new StringBuffer();
int c;
while ((c = reader.read()) != -1) {
buffer.append((char) c);
}
reader.close();
char[] array = buffer.toString().toCharArray();

324:320
08/08/19 23:39:07
>>323
一文字ずつを一つ一つの配列に入れたいです。100文字あったら100個の配列に入れるようなイメージです。
ソースプログラムありがとうございます。書いてある事はある程度理解できたのですが、分からないところもありました。
System.out.print(array); と加えたのですが、何も表示されず(´・ω・`)という顔をしてしまいました。
何を出力すれば良かったのでしょうか

325:デフォルトの名無しさん
08/08/19 23:42:03
配列はそのままprintlnしても中身は出ない
System.out.println(Arrays.toString(array));

326:325
08/08/19 23:48:01
って、ウソでした
試してみたら普通に出たorz

test.txtの中身がないとか?

327:320
08/08/20 00:00:25
何故かうまくいきません・・
よろしければソースを丸ごとコピペしたいので、貼り付けて貰えませんか?
一番最初の宣言からです。

328:デフォルトの名無しさん
08/08/20 00:15:03
>>327
どーぞ
URLリンク(rg550.hp.infoseek.co.jp)

329:320
08/08/20 00:31:02
>>328
ありがとうございます。できました!
とても助かりました。

宣言のところで、いつもchar array []としていたのですが、char [] arrayも同じなんですね。

330:デフォルトの名無しさん
08/08/20 00:34:33
>>329
というより、後者が推奨。

331:デフォルトの名無しさん
08/08/20 00:40:09
>main(String[] args)
その割にはmainはちゃんと後者で書いてるのね。

いちおうこれでもいけるけど main(String args[])


332:デフォルトの名無しさん
08/08/20 01:01:49
二次元配列なら3通りの書き方ができるよ
int[][] array;
int[] array[];
int array[][];

333:デフォルトの名無しさん
08/08/20 01:34:30
JARファイルの中にあるJARファイルにクラスパスを通すことって可能でしょうか・・


334:デフォルトの名無しさん
08/08/20 01:51:38
cloneの実装の仕方について教えてください。

A-B-C

のように継承関係にある場合CloneableをAにつけてそのあとどうすればいいんでしょうか?

public Object cloneをAに実装し、それをB、Cでもオーバーライドする?

335:デフォルトの名無しさん
08/08/20 01:58:35
>>334
class A implements Coneable {
 @Override
 public Object clone() {
  try {
    return super.clone();
  } catch (CloneNotSupportedException e) {

ポイントはAでsuper.clone();をしっかり呼ぶこと、浅いコピーでいいならこれだけでよい。


336:デフォルトの名無しさん
08/08/20 02:19:55
てかObject#clone()は仕様上シャローコピーだろ。

337:デフォルトの名無しさん
08/08/20 02:46:02
ディープコピーがしたいのです。

クラスBとCはどうすればいいのでしょうか?

338:デフォルトの名無しさん
08/08/20 02:55:57
>>337
class A implements Cloneable { 
 public Object clone() { 
  try { 
    A a = (A) super.clone();
    // ディープコピーのための追加ロジック
    return a;

B C にもディープコピーのための追加ロジックが必要なら同じようclone()をoverrideして
super.clone() をよび、それから追加ロジック。
必要ないならそのまま継承すればいい。



339:デフォルトの名無しさん
08/08/20 12:11:55
以前このスレッドでjavaの初心者(レベル2)向けの本として
javaの教科書(SJC-P対応)的な本と、Effective Javaという本を紹介してもらいました。
教科書的な本は読み終わりましたので、次のステップに向かいたいと思います。
何か良い本があれば教えていただきたいので、よろしくお願いします。

僕の考えている弱点、問題意識としては

1:コレクションやマルチスレッド処理の仕組みはわかるが、実際の使い道がイメージできない。
→実践的なプログラムのサンプルが読みたい。

2:英語直訳のような長文は苦手で頭に入らない。
→なるべく簡潔な日本語で、図を用いて説明してもらえると有難い。

という二点があります。


340:デフォルトの名無しさん
08/08/20 12:20:37
ConcurrentSkipListSetっていう名前のクラスをつかったら
プログラムを実行するたびに、セットは同じ要素は一つしか入らないはずなのに、
同じ要素が何個も一つにセットに入ったり、一つだけ入ったりしたんだけど。
なぜですか?
TreeSetにしても同じような症状でした。
でもCopyOnWriteArraySetにしたら同じ要素は一つしかありませんでした。
どうしてかおしえてください。


341:デフォルトの名無しさん
08/08/20 12:22:49
>>340
再現する具体的な例を。


342:デフォルトの名無しさん
08/08/20 12:25:53
>>341
再現する例はコードが長くなるので出せません。

343:デフォルトの名無しさん
08/08/20 12:27:27
じゃうp

344:デフォルトの名無しさん
08/08/20 12:47:19
秘密のコードなので出せません。

345:デフォルトの名無しさん
08/08/20 12:49:05
>>339
実践的なコードはWebでたくさんあるし、しかも説明つきだから自分の足使ったら?

346:デフォルトの名無しさん
08/08/20 13:00:13
>>345
残念ながら、現在、諸事情であまりパソコンをいじれる状態にないのです。
それから、本に線を引いたりして叩き込まないと頭に入らないタイプでして。

347:デフォルトの名無しさん
08/08/20 13:03:01
>>345
じゃあ諦めろ

348:デフォルトの名無しさん
08/08/20 13:04:16
>>347
キレやすい若者ですね。

349:デフォルトの名無しさん
08/08/20 13:10:13
>>339
結局君は、わがままな教えて君とかわりないが?

350:デフォルトの名無しさん
08/08/20 13:12:15
>>346
平日の昼間っからパソコンいじってて、それも2ちゃんやってるし、嘘はいけないだろ。ニート君は金払って学校いけよw


351:デフォルトの名無しさん
08/08/20 13:19:23
自分が何が欲しいかを具体的にわかっている場合はwebが有効なのですが
初心者の毛が生えたレベルでは必要な知識のイメージが漠然としているため
あまり有効ではありません。
マックに行きたい人と、何か食べ物が食べたい人では、どちらが早く目的地にたどり着き
満足する食事を得られるかということを考えてみればわかると思います。

またwebでは目次のようなものがないか、あっても未整理である場合が多く見受けられますし
索引が利用できないのも大きなデメリットでしょう。

さらにはチェックやマークが出来ないため、再度読み直した際の効率が非常に悪い。

もっと言えば、いちいちスクロール、クリックするのが非常にめんどいという欠点もあります。
ちょっとした知識だけを得ればいい中級以上の方とちがい、全体を系統立てて学びたい初心者には
大きなストレスとなるでしょう。

なんでもwebという考え方には同意できません。

>>349
最初からわがままな教えて君のつもりですけど。

>>350
いや、正直言って無職だけどさ、パソコンあるのが実家でね。行ったり来たりなわけ。


352:デフォルトの名無しさん
08/08/20 13:22:06
お前は一体プログラムで何を作りたいんだ?
まず目的を示してそこに向かう手段のために
本を買うわけだろ?

353:デフォルトの名無しさん
08/08/20 13:23:35
public class A implements Serializable {
private static final Logger logger = Logger.getLogger(Aclass);
}
このクラスをシリアライズするとloggerもシリアライズされるでしょうか?
loggerをデシリアライズするのはまずいと思うので、transientをつけるべきでしょうか?

354:デフォルトの名無しさん
08/08/20 13:30:33
>>352
無職だから就職のために必要な最低限の知識が欲しい。
創りたいものは漠としている。

現実的ではないかもしれないが、最終的にはひきこもり向けの学習支援アプリを創りたい。
理系科目を、直感的に操作して学習できるようなアプリがいい。
セカンドライフ的な要素も付け足してオンライン予備校にしたい。

355:デフォルトの名無しさん
08/08/20 13:32:18
>>339,345

こういう奴はキモイんだよな。なんつーか虫唾が走るっつーかwwwこういう奴はどうしたらいい?


356:デフォルトの名無しさん
08/08/20 13:35:48
>>355
俺向けにチェックやマークができて再読に向いていて、
自分の欠点を把握、補強できるJAVA学習支援アプリ創ったらいいと思うよ!

ほら、行った行った。

357:デフォルトの名無しさん
08/08/20 13:59:40
>>351
うええ。
今、実家にいて、
目の前のハコで調べられることを、調べないで、
初心者にはムリ!!!
とかいってんのか。
それなら、初心者とかじゃなくて、無能ってことじゃね?

358:デフォルトの名無しさん
08/08/20 14:03:11
>>357
調べられることは調べてんよ。
でも本のほうが効率いい。
webは再読に向かない。
早く教えろよ。

359:デフォルトの名無しさん
08/08/20 14:06:13
>>358
きみにはデザインパターンが不足してると思うから、
Java言語で学ぶデザインパターン入門
を買うといいよ。

360:デフォルトの名無しさん
08/08/20 14:13:56
>>351
君の相手をするのが面倒くさい
オジサンは酒飲んで黙ってろ

361:デフォルトの名無しさん
08/08/20 14:16:35
>>359
うわー、ありがとうございます。
早速カートに入れてきました。
公式ページも見てきましたが、僕の知らないことばかりで、非常に読むのが楽しみです。

362:デフォルトの名無しさん
08/08/20 14:16:55
>>359
それよりも、こいつのような30代ニートにはコミュニケーションスキルの方が先だと思うw

363:デフォルトの名無しさん
08/08/20 14:21:28
>>362
まだ二十代だよ。
しゃべったらボロが出るけど、しゃべらないで笑ってるからいい人扱いだぜ。

おまえらマジ役にたたねーから、俺、いつか初心者向けのJAVA学習サイト作るわ。

webはマルチスレッド、書籍はシングルスレッド。
おまえらだっていきなりwebで学んだわけじゃねーくせに。
ペッペッ!

364:デフォルトの名無しさん
08/08/20 14:22:24
Java言語で学ぶデザインパターン入門 

とかも知らないところを見ると、PCすら使えない無能な教えて君だな。きもすぎる

365:デフォルトの名無しさん
08/08/20 14:24:32
あれだろ
無職で実家とか言って、「面接20社受けて全部落ちました。Orz」とかの無能ニートじゃねーの?(笑)
素直にJavaを教えてる学校いった方がいいよw

366:デフォルトの名無しさん
08/08/20 14:27:34
>>361
>>363


まあ、まずは俺のチンコしゃぶれよ

367:デフォルトの名無しさん
08/08/20 14:38:41
>しゃべったらボロが出るけど、しゃべらないで笑ってるからいい人扱いだぜ。 

ん?十分ボロが出てるみたいだけど、どういうこと?

368:デフォルトの名無しさん
08/08/20 14:46:44
>>365
ブルジョワプログラマーめが。
大学の奨学金もまだまだあるのに専門行けっかよ。
それに勉強は本読んだほうが早い。

>>366
throws IOExceptionだ。

サンプル集はwebにはあるが書籍はあんまり無いな。

>>367
リアルではしゃべらないで笑ってんだよ。
俺がいると職場がなごやかになるんだぜ。
webだとボロが出るよ。俺はものの考え方がおかしいからな。



今日は>>359さんみたいな聖人に出会えたからいいや。

369:デフォルトの名無しさん
08/08/20 14:49:08
>>363
それ、単なるのけ者だよ。
まともなヤツは快活だからな。

370:デフォルトの名無しさん
08/08/20 14:51:15
>>368
本を読めば何とかなるって、
ヤセレばキレイになるって幻想と一緒じゃね?

371:デフォルトの名無しさん
08/08/20 14:53:22
質問です。
ハードウエアでいうIRQみたいなのをJAVAで実装するにはどうすればいいでしょうか?

複数のI/OコンポーネントとGUIから構成されるソフトを作っているのですが、今の実装だと
全てのクラスに中核モジュールへのレファレンスを持たせて、その内部状態をI/Oイベントがあると
*I/Oモジュールから*変更させるように作っているのですが、これだと中核モジュールを変えたときに
広がる波紋が大きそうな気がして心配です。

ですから、各I/Oモジュールが何かのイベントを探知すると中核モジュールにイベントを投げて
中核モジュールのみが自らを操作するようにしたいのですが、その方法がよくわかりません。
(中核モジュールにI/Oモジュールでイベントがあったことを探知させる方法が分かりません)

ExceptionをI/OやGUIモジュールから中核モジュールに投げる方法もあるかな、と思ったのですが、
例外は例外用にとっておきたいと思います。

ご教授お願いします。

372:デフォルトの名無しさん
08/08/20 14:55:54
無能力者なのに就職活動もしないで、まったく下地の無いプログラミングに時間を割いている時点で、
バカとしか判定しようが無いな。

373:デフォルトの名無しさん
08/08/20 15:01:32
>>371
「I/Oコンポーネント」と「I/Oモジュール」、「I/Oイベント」の関係がわからないな。
オブジェクト間のやり取りが変わるような部分を書き換えれば、影響するのは当たり前じゃね?
イベントでもメソッドの呼び出しでも変わらないだろ。

374:デフォルトの名無しさん
08/08/20 15:07:07
>>372
一見、大学の奨学金もらって頑張ってるようだけど、就職活動もしないで実家にひきこもってるただの無職ニートだろ。
自尊心が高いだけの単なるナルシストなんじゃね?

375:デフォルトの名無しさん
08/08/20 15:12:06
なんかここでも夏の虫が沸いてるのか?

376:デフォルトの名無しさん
08/08/20 15:15:29
>>373
よく考えてみたら、確かにまったく変わりませんね。
さらに考えてみたらちょっとデザインを変えるだけでまったく
解決できる問題だということも分かりました。
ありがとうございます。

377:デフォルトの名無しさん
08/08/20 15:17:35
ゲームばっか遣ってる無職ニートよりはましだと思うけど。

378:デフォルトの名無しさん
08/08/20 15:20:14
>>368
Javaを教えてる講座など申し込んで短気集中か、今の時代ならHPの方も良くまとまってるページが多いですよ。
結局は、字を読むなら本と同じですし。
変に本の方に権威を立てて過信してませんか?

MSのC#とかも初心者教育に力を入れてるし、MSDNのWeb一つでまとまってるのでお勧めです!

379:デフォルトの名無しさん
08/08/20 15:22:05
>>374
モラトリアム黴ってやつだな。

380:デフォルトの名無しさん
08/08/20 15:26:52
>>372 >>374
ペッペッ!
一時期ちゃんと働いてたっつの。

>>378
そうですねー。
無職ですから、コストパフォーマンスを考えると、どうしても講座をうける気にはなれないんです。
でも、webはお金もかからないですし、もうちょっと柔軟に考えてみるようにします。

ちょくちょく実家に来るようにしますかね。


381:デフォルトの名無しさん
08/08/20 15:27:01
>>378
間違ったこと書いてる本だって、一杯、出版されてるしな。
入門書なんか、見た目が派手なだけで完成してないサンプルとか、
本当にタイトルだけ奇抜なんてことも多いしな。

382:デフォルトの名無しさん
08/08/20 15:32:50
大学の奨学金が嘘じゃないってことよりも、学歴が三流以下の大学じゃその辺で寝てるニートとたいしてかわりないだろ。それも「ペッペッ! 」とかキモイし、こいつはリアルでキモイんだろうな

383:デフォルトの名無しさん
08/08/20 15:34:33
>>380


まずは、俺のチンコしゃぶれよ。

384:デフォルトの名無しさん
08/08/20 15:47:41
>>382
俺がリアルでキモかろうがキモくなかろうが、どうでもいいことだと思うんだが。
問題は今キモいことだけだろ。
なんでリアルまで心配してくれるんだ。

人間、学歴は関係ないよな。
俺はろくな努力もしないでマーチより上の国立大学に受かったために
無駄にプライドは高いんだが、実力は無いし、社会的なスキルはほとんどない。
でも、プログラマにはそういうやつも割といるって聞いたぜ。
あんたの同僚にもいるだろうよ。

>>383
そういうのは実装してないんだわ。

385:デフォルトの名無しさん
08/08/20 15:50:15


俺はろくな努力もしないでマーチより上の国立大学に受かっ


386:デフォルトの名無しさん
08/08/20 15:53:56
>>384
きみ、もうキモイから消えてくれないか?

大学受かったかよりも、その大学を卒業(満了)できたのかが社会では重要なんだけど。

それも君のように無能で無職なものにとってそんな肩書きは正しく「豚に真珠」じゃないか?


387:デフォルトの名無しさん
08/08/20 15:55:22
>>384
Javaなんか勉強するよりC#の方がMSがバックにいるし将来の為にいいよ。
そうだ!大学院目指したらどうだろう?

388:デフォルトの名無しさん
08/08/20 16:11:48
デザインパターンで雁字搦めにry

389:デフォルトの名無しさん
08/08/20 16:16:33
また夏厨か。くどいな。

390:デフォルトの名無しさん
08/08/20 16:39:58
>>387
ありがとうございます。
C#はJAVAの下地があったほうがわかりやすいみたいですね。
もう少しJAVAがわかるようになったら浮気するか考えてみたいと思います。

院は嫌です。僕の大学だけかもしれませんが、院に行った友人の話によると
出世争い、研究室の私物化、ゴマすり、お粗末な博士論文など、あまり魅力的に思えません。
時間も金もないですし。
せっかくアドバイスもらってのに、スイマセン。

391:デフォルトの名無しさん
08/08/20 16:41:33
思うんだけど、こういう人が次々とWebでJavaの説明ページ作ってんじゃないのか?
それなら本なんか頼りにするよりも、間違えやすいところとかコツとかあるわけだし、手っ取り早く習得できると思うんだけど…

392:デフォルトの名無しさん
08/08/20 16:43:34
おまえら、くそJavaなんかやめちまえ!プログラム言語は
総じてマイクロソフトの製品じゃないとだめだ!PHPもPerlもくそ!
Javaはもちろん一番くそ!

おまえらにお勧めの言語はAccessVBAだ。

393:デフォルトの名無しさん
08/08/20 16:47:54
プログラミングとかはGPLが最高らしいよ。
Microsoftはコピーライトだから駄目らしい。
あと、楽しみが人間として一番高度らしいから、楽しみでプログラミングしている奴が
最強らしいよ。

394:デフォルトの名無しさん
08/08/20 16:48:12
だいたい、プログラムのすれでも、Javaスレの連中とC#スレの連中を比べると
教養の差がわかる。

395:デフォルトの名無しさん
08/08/20 16:49:00
だから、楽しみでAccessVBAしろ!

396:デフォルトの名無しさん
08/08/20 16:49:25
>>395
accessVBAはコピーレフトじゃないだろ。

397:デフォルトの名無しさん
08/08/20 16:52:25
>>390

そういうお前は、ひきこもり兼ニートじゃないの?
お前の魅力に関係なく、無職より院生のほうがましw

398:デフォルトの名無しさん
08/08/20 16:54:00
すごいですね!どこの大学卒業したんですか?やっぱり高学歴でお勉強も出来るともてるでしょ♪

399:デフォルトの名無しさん
08/08/20 16:54:54
自作板とかPC関連の板ってスルーできないやつ多いよね

400:デフォルトの名無しさん
08/08/20 17:00:00
教養の差は確かにあるけど、作るプログラムとはあまり関係ないだろ。
ソフトで言えばJavaよりVB(旧VB)の方が使いやすくて便利なのが多いんだけど…

401:デフォルトの名無しさん
08/08/20 17:15:22
マーチ以上の大学で援助金ももらってるとか言う嘘つきって2chによくいるよねw
あまりパソコン触れないとかいいつつも、2chだけは欠かさずチャックしてるしww

402:デフォルトの名無しさん
08/08/20 17:17:24
>>392

何言ってんだよ。鼻くそはオマエ

403:デフォルトの名無しさん
08/08/20 17:21:55
フォルダを削除するコードは、以下の感じでよろしいでしょうか。

File filelist[] = folder.listFiles();
for (int i = 0; i < filelist.length; i++) {
filelist[i].delete();
}
folder.delete();


404:デフォルトの名無しさん
08/08/20 17:25:04
>>400
vbのselectは入力のチェックとか楽チンだった。

405:デフォルトの名無しさん
08/08/20 17:29:29
高学歴をうたってはいたが、都合いいことばかり言うカス・ニートと同じだったか・・

406:デフォルトの名無しさん
08/08/20 17:33:40
>>401
俺がパソコンを触れないのは、パソコンのある実家とそれ以外を行き来してるからだ。
前にさりげなく匂わしてるあるはずだが。

実家に来たら三十秒に一回ペースでにちゃんねるとチェックしているが、チャックはしてない。

407:デフォルトの名無しさん
08/08/20 17:38:23
>>406
オマエ、12時から張り付いてるぞ。
>>339
>339 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/20(水) 12:11:55

408:デフォルトの名無しさん
08/08/20 17:39:04
一生駅と公園の往復でもしてろ

409:デフォルトの名無しさん
08/08/20 18:13:12
>>406
君はオープンソースに触れるとフリーの世界がなんとなく分かるんじゃないか?
ジャバもオープンソースだけど、君は英語ぐらい読めるんだろうから、
java.sun.com, java.net辺りから探って無料の英語の教科書を読んでみな。
それと早く自分用のパソコンぐらい買え。

410:デフォルトの名無しさん
08/08/20 18:27:47
心理学科とかの文系で、いくら探しても「職がないからジャヴァしてます」ってところじゃないの?
なんか自分の学歴を自慢してるようだけど、何の勉強してきたんだろうねw

411:デフォルトの名無しさん
08/08/20 18:41:22
おまえら何でそんな表面に釣られてうだうだ言ってんのさ?

実家に行かなきゃPC無いような初学者なら
買うのは本じゃなくて、まずPCでしょ?ボロくて良いからさ
いくら本読んだところで畳水練だよ?

412:デフォルトの名無しさん
08/08/20 18:49:45
高学歴に嫉妬する低学歴のレスの集まりですね。わかります。

413:デフォルトの名無しさん
08/08/20 18:52:29
PropertiesからMapに変換する一番簡単な方法を教えてください

414:デフォルトの名無しさん
08/08/20 19:00:07
Properties#entrySet()がそのままmapなのだけど、よくやるのはこんな感じ。
TreeMap<Object, Object> map = new TreeMap<Object, Object>(System.getProperties());


415:デフォルトの名無しさん
08/08/20 19:14:11
>>412
そうじゃないのよ。質問なくてヒマだから相手してるだけww

416:デフォルトの名無しさん
08/08/20 19:37:15
相手するのが馬鹿っぽいとは気付けないんですね、わかります

417:デフォルトの名無しさん
08/08/20 19:47:47
>>416
つつけばドタバタ踊るんだから、それなりに面白いよ

418:デフォルトの名無しさん
08/08/20 20:16:32
>>409
ありがとうございます。早速のぞいてみました。
英語は珍しい単語以外はわかりそうです。
あとは根気があれば・・・って感じですね。

>>417
レスがつくのって楽しいですよね。
レスがつく時のわくわく感に訴えるアプリが作れたらおもしろいですよね。



419:デフォルトの名無しさん
08/08/20 21:01:24
別人のようだけど、惨めたらしさは変わんないよな。

★★ Java の宿題ここで答えます Part 65 ★★
スレリンク(tech板:830番)

830 名前:デフォルトの名無しさん[] 投稿日:2008/08/15(金) 08:54:52
javaって難しくない?
URLリンク(mild7070.livedoor.biz)



420:デフォルトの名無しさん
08/08/20 21:34:55
そいつは、もともとキモイからニートなんじゃんww

421:デフォルトの名無しさん
08/08/20 21:36:56
>>419
貼ったから見てやったけど、バイトなんてしちゃだめだろ。
やっぱひきこもって自宅で勉強しないとさあ。

わかってないよね、こいつ。

だいたい、「世の中、裏狙い」って・・・
ITドカタに甘い汁があると思ってんのかよw


422:デフォルトの名無しさん
08/08/20 21:55:59
>>418
ほら、呼んでるぞ!

423:デフォルトの名無しさん
08/08/20 22:05:26
っていうか、このスレの常連、やんでるわ。マジで。

424:デフォルトの名無しさん
08/08/20 22:07:54
>>422
ちゃんとレスしただろ。

425:デフォルトの名無しさん
08/08/20 22:16:20
次の高級な質問をどうぞ

426:デフォルトの名無しさん
08/08/20 22:47:48
ぬるぽ

427:デフォルトの名無しさん
08/08/20 23:03:56
ぬるぽ

428:デフォルトの名無しさん
08/08/20 23:24:27
ぬるぽ

429:デフォルトの名無しさん
08/08/20 23:50:12
Effective Javaってカス本だと思うんですが
玄人の人はどう思いますか。

430:デフォルトの名無しさん
08/08/21 00:08:38
>>424
せっかく時間が有り余ってるんだから、Javaなんてやらずに関数型言語やったほうがいい。
それからOO言語に移行したほうが、プログラミングの筋が良くなる。

431:デフォルトの名無しさん
08/08/21 00:16:08
>>430
死滅したツールなんか覚えてもな・・・

432:デフォルトの名無しさん
08/08/21 00:17:38
Effective Javaってカス本だと思う方がもっとカス

433:デフォルトの名無しさん
08/08/21 00:20:27
カスだと思うのは自由だが、誰にとって?なぜ?を語らぬ限りは
まともな返答は返ってこないだろう

434:デフォルトの名無しさん
08/08/21 00:21:32
そもそも、java2とか、その前を対象に書かれてるんだっけ?

435:デフォルトの名無しさん
08/08/21 00:22:02
>>432
内容はいいんだが、翻訳がカスだから、カス。

中級者は読み飛ばせるから気にならないだろうが、みっちり読みこなしていくと日本語のひどさに苛立つ。
多分、英語版のほうが読みやすい。

436:デフォルトの名無しさん
08/08/21 00:26:55
英語版を読んだとしても、まだ問題がある。
この本は「JAVA哲学」を徒然と書き綴ったものであるため
内容が前後左右にぶれてしまっている印象がある。
また、読み手をあまり意識していないので、話が抽象的になりすぎて
具体的なイメージをつかみにくい。文章がくどい。

玄人の方は読み飛ばしていると思うが
「あれ、ここ、こんなに説明いらなかったんじゃないの?」っていう部分が多かったんじゃないですか?
違いますか?

437:デフォルトの名無しさん
08/08/21 00:47:53
JAVA初心者です。
現在、あるWebアプリケーションの開発を開始しておりますが
下記の箇所で躓いております。

◆任意のパスワードを生成するメソッド
 ・英字(大文字、小文字)、記号、数字でランダムの組合せ
  (使用不可の文字は後からでも修正できる)
 ・文字数は10文字で固定

上記のように製造したいのですが、知識不足の為
先に進めておりません。
是非皆さんの知恵をお貸し下さい。



438:デフォルトの名無しさん
08/08/21 00:49:37
質問です。
JavaにZIP形式の圧縮ファイル読み込みのStreamクラスがありますが、
パスワードが付いたファイルを読み込むにはどうしたらいいのでしょうかm(__)m

439:デフォルトの名無しさん
08/08/21 00:51:08
>>437
何に行き詰まってるのかわかりませんが、乱数使えばいいと思います。

440:デフォルトの名無しさん
08/08/21 00:55:07
>>438
自作するしかありません

441:437
08/08/21 01:22:28
>>439さん
返答ありがとうございます。
乱数ですか、調べてみます。

質問に不備がありすみません。
任意のパスワードを生成するメソッドの組み方自体にも躓いております…


442:デフォルトの名無しさん
08/08/21 01:31:40
>>441
特に強度や安全性を気にしないなら、こんな感じでいいんじゃないか

String s = "ABCDEFG............xyz!#$%&'0123456789"; // 使ってよい文字のリスト
Random r = new Random();
char[] password = new char[10];
for(int i = 0; i < 10; i++) {
password[i] = s.charAt(r.nextInt(s.length());
}

443:437
08/08/21 01:47:50
>>442さん
ありがとうございます!
参考にさせて頂きます。



444:デフォルトの名無しさん
08/08/21 08:22:38
別にいいっちゃいいけど一応暗号用乱数使ったほうがいいよ。


445:デフォルトの名無しさん
08/08/21 10:11:16
RMIのサーバー側は2つのリモートコールがほぼ同時に発生した場合並列処理になるのでしょうか?
それとも1つずつの処理になり、後のものは先の終了を待つまで呼ばれないのでしょうか?

446:デフォルトの名無しさん
08/08/21 10:12:22
Randomをnewしてそのまま使ってはだめ

447:デフォルトの名無しさん
08/08/21 12:56:02
来年からプログラマとして働くことになったのですが
JavaってSwingとかのGuiアプリケーションの知識身に付けて実務で使われることってありますか?

それは完全に役に立たないって事は無いとは思いますが費用対効果として
JSP/サーブレットとかをずっとやってた方が役に立つのかなと疑問に思いました。

448:デフォルトの名無しさん
08/08/21 13:09:45
>>447
就職先の業務内容次第じゃね?
どんな部所に配属されるかにもよる。
分からないなら好きな方やっとけばいいと思う。

449:デフォルトの名無しさん
08/08/21 13:13:26
>>447
ぶっちゃけ、Javaを使うかどうかもわからないんじゃないの?

450:デフォルトの名無しさん
08/08/21 13:35:48
>>448-449
すいません、レスありがとうございます。
一応研修期間中にSJC-P取得があるみたいなのでJavaは使うと思われます。
なんか市販のソフトって大概exeで、JavaのGuiアプリって使われてるのか疑問だったのです。
なんかいまいち業界事情がPCショップとかで売られてるソフトのイメージでしか判断出来ない感じあるのですが、
そのレス内容から判断すると一応使われる技術と考えてOKでしょうか。


451:デフォルトの名無しさん
08/08/21 14:12:26
>>450
一応言っとくけど、exeってのはWindowsで「しか」使えない実行ファイル形式だからね。(wineとかは例外)
携帯アプリならJavaでGUI操作するんじゃね。(場合/キャリア/気分に依存する)

452:デフォルトの名無しさん
08/08/21 14:28:19
>>445
JavaDoc の「Java RMI の仕様」の「3.2 リモートメソッド呼び出しにおけるスレッドの使用法」
を読む限り、呼び出される側は並列処理になり得ると書いてある。
なのでスレッドセーフになるようにすべきだそうだ。

453:デフォルトの名無しさん
08/08/21 14:28:47
SUNはデスクトップに力を入れる方針だし、これからはSwingでしょ。

454:デフォルトの名無しさん
08/08/21 14:41:10
>>451,453
そっかぁ、exeがwin依存なのは知ってたのですが、
winユーザが大半だから利益追求が絡む企業での実務では使われないものかと思ってました。
WIN32APIとか.NETと比べてJavaの方が整備されてて好きなので
swingの需要があるようで良かったです。
残りの一年こっちをやろうと思います、ありがとうございました!

455:デフォルトの名無しさん
08/08/21 15:43:16
いやswingの需要は無いよ

456:デフォルトの名無しさん
08/08/21 15:45:19
>>455 お前が使えないだけじゃね?

457:デフォルトの名無しさん
08/08/21 15:50:19
それよりWindowsプログラマならVisualC++をマスターするほうが
よっぽど役に立つよ

458:デフォルトの名無しさん
08/08/21 16:00:40
>>457
まあ、Javaなら後からでも覚えられるし、VCは使いづらいし覚えなくちゃいけないことも多いからな・・・

459:デフォルトの名無しさん
08/08/21 18:43:59
ま、俺は、SwingGUIアプリでOracleと接続したやつ作ったけど、
役に立たなかったなあ。なぜかというと、SwingGUIがあまりにももっさりしていたから。だいぶ昔の話だけど。

460:デフォルトの名無しさん
08/08/21 18:45:10
Swingやるなら、JavaFXとかAppletとか極めれ。東京都の中で必要としているところが10箇所くらいあるから。

461:デフォルトの名無しさん
08/08/21 18:47:28

         ___
       / ⌒  ⌒\
      / (⌒)  (⌒) \   でも、個人的にはVCの方がすきなんだお!
    /   ///(__人__)/// \  
     |   u.   `Y⌒y'´    |
      \       ゙ー ′  ,/
      /⌒ヽ   ー‐    ィヽ
      / rー'ゝ       〆ヽ
    /,ノヾ ,>      ヾ_ノ,|
    | ヽ〆        |´ |


462:デフォルトの名無しさん
08/08/21 18:49:45
   / ̄ ̄\
 /   _ノ  \
 |    ( ●)(●)
. |     (__人__)   Awtって必要ないだろ…
  |     ` ⌒´ノ    常識的に考えて…
.  |         }
.  ヽ        }
   ヽ     ノ        \
   /    く  \        \
   |     \   \         \
    |    |ヽ、二⌒)、          \




463:デフォルトの名無しさん
08/08/21 19:41:26
複数のスレッドをwaitさせて特定のスレッドのみnotifyで再開させたいのですが
ランダムで再開というのを見ると特定のスレッドのみ再開させるというのは不可能なんでしょうか
または他のメソッドで上記に似たような事をできないでしょうか
まだまだ初心者なので変なことを聞いているようであればすいません
ご教授よろしくお願いします

464:デフォルトの名無しさん
08/08/21 20:11:38
notifyAllで全部のスレッドを起こす
起きたスレッドは、呼ばれたのが自分じゃなかったら、waitで二度寝する

465:デフォルトの名無しさん
08/08/21 21:00:50
getKeyCodeで0を返すショートカットボタンなどは、
javaからどのボタンが押されたか判定することはできないのでしょうか?

466:デフォルトの名無しさん
08/08/21 22:45:22
意味不明。
Webなのか?Swingなのか?

467:デフォルトの名無しさん
08/08/21 23:03:20
byte a=5;
byte b=6;
byte c=a+b;
これって3行目がc=5+6なら通るのになんでエラーになるんでしょうか?
大きいintの値を小さいbyteに入れようとするから普通は一行目からエラー
だけれども、それだと面倒だからコンパイラが親切で自動でキャストしてくれるから
一二行目はエラーにならないみたいな話を本で見たので、それが行われないって話だと思うのですが、
byte+byteはint以下の数値を扱う式はintとして評価される、というルールから
intになるので自動でキャストしてくれそうだと思ったのですが。

468:デフォルトの名無しさん
08/08/21 23:06:40
>>467
byte a=5;
byte b=6;
byte c;
c=a+b;

ってやってみたら?
変数の初期化部分で変数は使えないんだと思う。

469:デフォルトの名無しさん
08/08/21 23:11:29
int -> byteは縮小だから、byte a = 5; が通る方が特殊と考えれ
うろ覚えだが、byte a = 999999; とかだとコンパイルエラーにならなかったか?

470:デフォルトの名無しさん
08/08/21 23:23:54
>>468
コンパイルできないけどorz

471:デフォルトの名無しさん
08/08/21 23:28:26
>>470
二項数値昇格で int型の値に昇格されるはずだから、
>>468 がコンパイルできたら言語仕様に反する。

472:デフォルトの名無しさん
08/08/21 23:37:41
もう少し考えろよw

473:468
08/08/21 23:42:38
おれ涙目w

byte a=5;
byte b=6;
byte c;
c = (byte)(a+b);

でどうだ。
今回はコンパイルも通った(gcjだけど)から、大丈夫だ。

474:デフォルトの名無しさん
08/08/21 23:43:39
コンパイルが通るコードが前提だろ!

475:468
08/08/21 23:48:57
byte a=5;
byte b=6;
byte c = (byte)(a+b);

なんだ、これでもうまくいくのか。
流石だなJava.


476:467
08/08/21 23:50:32
レスありがとうございます。

手元の本で関連がありそうな所を漁ると、
(1)
「char(数値を格納した)、short、byteのint以下の範囲の数値を格納する型は、
たとえその型の範囲内の数値でもその式を評価すると全てintになる。」
(例)
byte a=1;
byte b=2;
a+b ←byteの範囲内でもint型

(2)
「short,char,byteのint以下の範囲の数値を格納する型に数値を格納する際、
数値はint型として評価されるが簡略化のためキャストを行わなくても
コンパイラが自動的にキャストする」
(例)
byte a=1; ←コンパイラが自動で(byte)1としてくれるので有効。

この二つの記述があり、それを踏まえてbyte a=1+2は(2)により有効なのですが、
これが467で書いたように変数で行うとコンパイラの自動キャストが働かないのが謎なのです。
もちろん>>473の方が書いてくれたように自分で明示的にキャストすれば通るのですが。

477:デフォルトの名無しさん
08/08/21 23:56:16
>>476
リテラルをキャストするのと、変数をキャストするのは意味が違うんじゃないの?

478:デフォルトの名無しさん
08/08/21 23:58:42
少しはググれよ

479:デフォルトの名無しさん
08/08/22 00:01:04
自動的に変換が効くのは定数のときのみ
URLリンク(java.sun.com)

480:デフォルトの名無しさん
08/08/22 00:05:52
>>478
これは少しググって見つけるの難しいだろw

481:デフォルトの名無しさん
08/08/22 00:10:25
byte b;
b = (byte)200;
System.out.print(b);

とすると-56と表示されるんですがなぜその値なのでしょうか?

それから、longをfloatに型変換するのがなぜ拡大変換なのですか?
二つともビットは同じだと思うんですが・・・。

482:デフォルトの名無しさん
08/08/22 00:14:27
>>477,479
なるほど、ありがとうございます!
自動的な変換は制限があったのですか、、byteとかはストリームからの読み取りとかでは使ってましたが
こういう数値を足したりするのをbyteではあまりやらないので勉強になりました。
お世話になりました。

483:デフォルトの名無しさん
08/08/22 00:15:41
>>481
2の補数表現。

long より float の方が表現できる値の範囲が広いから。
あとビット数はfloat32bitでlongが64bit

484:デフォルトの名無しさん
08/08/22 00:18:48
Vista java インストールできない、.java形式で保存できない
どうすればいい?
一応インストールはしたつもり

485:デフォルトの名無しさん
08/08/22 00:20:34
インストールできないのにインストールしたつもり??

486:デフォルトの名無しさん
08/08/22 00:20:42
>>481
intは32ビット。byteが16ビット。入りきらないのはちょんぎっちゃう。
32ケタあった1と0の組み合わせが無理やり16ケタにちょんぎられちゃうわけだから
変な数になっちゃう。

487:デフォルトの名無しさん
08/08/22 00:29:03
485さん
確実にインストールはできています。しかし コマンドプロンプトで java -versionで
バージョン確認はできるのですが、javacは表示されません。

488:デフォルトの名無しさん
08/08/22 00:31:08
いつクビになるかいつもビクビクするよね。

489:482
08/08/22 00:33:30
お世話になったので寝る前に自分からも。

>>481
Javaではダウンキャストの際に単純に上回るビットを左から削除するだけ。
200は内部的には00000000 00000000 00000000 11001000で
byteにキャストすると下8桁の11001000だけが残る。
この値は単純に見ると200だがbyteは符号付きの型なので
一番左の1bitを+-の判定に使う。
そのためこの値は二の補数で表現された-56という数と解釈される。
(全ビットを0と1反転させた後1加えると56になる。)
ちなみにbyteの格納範囲は-127~127。

490:デフォルトの名無しさん
08/08/22 00:36:25
sdkを入れてないとか、sdkにパスが通ってないとか

491:デフォルトの名無しさん
08/08/22 00:41:29
set path + Enterで
表示されるのが
'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

d:\java>set path
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\In
tel\DMIX;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\
Common Files\Roxio Shared\DLLShared\;C:\Program Files\Common Files\Roxio Shared\
DLLShared\;C:\Program Files\Common Files\Roxio Shared\9.0\DLLShared\;C:\Program
Files\Common Files\Sony Shared\FeliCaLibrary;C:\Program Files\Edy\Edy Library;C:
\Program Files\Java\jre1.6.0_07\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

d:\java>

492:デフォルトの名無しさん
08/08/22 00:48:25
C:\Program Files\Java\jdk1.6.0_07\bin というフォルダはないかな?そこにパスを通せ。


493:デフォルトの名無しさん
08/08/22 00:53:36
C:\Program Files\Java\jre1.6.0_07\binというフォルダは確かに存在します。
パスを通すとは?491で表示した、set Pathで表示されたら問題ないはずではないのですか?

494:デフォルトの名無しさん
08/08/22 00:54:37
よく目を凝らして
jre
jdk


495:デフォルトの名無しさん
08/08/22 00:55:34
>>493
jreじゃなくてjdk。
jreはJava Runtime Enviroment
jdkはJava Development Kit

496:デフォルトの名無しさん
08/08/22 00:59:01
みんな優しいな

497:デフォルトの名無しさん
08/08/22 01:02:17
>>494>>495
環境変数のJAVA_HOMEをjre → jdkに変更をすればいいですか?

498:デフォルトの名無しさん
08/08/22 01:17:33
それともインストール自体が間違っていたのですか?

499:デフォルトの名無しさん
08/08/22 01:17:39
>>497
そのjdkのフォルダがあるなら、ね。
なかったら、Java SE Development Kit (通称JDK)をインストールする必要がある。


500:デフォルトの名無しさん
08/08/22 01:20:51
インストールしたのが
URLリンク(java.sun.com)  の
JDK 6 Update 7をダウンロードしました。

501:デフォルトの名無しさん
08/08/22 01:23:08
これはFAQだな。
本の初めのほうに書いてある。

502:デフォルトの名無しさん
08/08/22 01:25:48
ちなみに会社だとXPで何も問題なくできるのに、自宅のVistaではかなりてこずっています。

503:デフォルトの名無しさん
08/08/22 01:32:37
>>500
JavaはC言語とかと違ってコンパイルすると中間コードが生成される。
これは君が普段使うソフトの形式であるexeと違ってコンピュータは直接実行出来ない。
これを動かすのに必要なのがJRE。
Javaで開発されたソフトを使うにはユーザはこれを入れなければならない。
逆に、ユーザは自分の環境に合ったJREを入れることで、exeと違ってMacだろうがLinuxだろうが実行出来る。
JDKっていうのは、君が書いたソースコードを中間コードにするためのもの。
javacってのはこのJDKに含まれるコマンド。

504:デフォルトの名無しさん
08/08/22 01:34:00
update10がRCなのか。でたら久しぶりにJDKをあげるかな

505:デフォルトの名無しさん
08/08/22 01:40:03
とりあえず自分のインストールあったJavaをすべてアンインストールしたら
無事コンパイルと実行ができました。HelloWorldが表示されました。
JDK 6 Update 3とJDK 6 Update 5がインストールされてたからおかしくなっていたのですかね?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch