【初心者】Java質問 ..
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
dクス
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()は仕様上シャローコピーだろ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4347日前に更新/268 KB
担当:undef