★★Java質問・相談スレッド134★★
at TECH
1:テンプレ(1/3)
09/11/21 17:58:46
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 URLリンク(pc11.2ch.net)
Webプログラミング URLリンク(pc11.2ch.net)
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
URLリンク(www.wikiroom.com)
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
★★Java質問・相談スレッド133★★
スレリンク(tech板)
次スレは>>950あたりで。
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
URLリンク(www.wikiroom.com)
2:テンプレ(2/3)
09/11/21 17:59:11
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 8
スレリンク(tech板)l50
■ SWT は --
Java 高速GUI SWT 3
スレリンク(tech板)l50
■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part19
スレリンク(tech板)l50
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 9
スレリンク(tech板)
■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 68 ★★
スレリンク(tech板)
■ NetBeansに関する雑談は --
NetBeans Part5【Java/C++/Ruby/Python/PHP】
スレリンク(tech板)
■ Eclipseに関する雑談は --
Eclipse統合M28【Java/C++/Ruby/Python/Perl】
スレリンク(tech板)
3:テンプレ(3/3)
09/11/21 17:59:30
**** 開発環境が必要の場合は ****
■ J2SE 5.0 (1.5.0)
URLリンク(java.sun.com)
■ Java SE 6
URLリンク(java.sun.com)
**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
URLリンク(www.java.com)
4:デフォルトの名無しさん
09/11/22 07:41:46
enumの列挙子をダイナミックに設定することは可能ですか?
例えば、databaseからselectで戻った値をセットするような。
自分で調べた範囲では、できないように思いましたが。
5:デフォルトの名無しさん
09/11/22 12:01:15
それ列挙子の意味がなくね
6:デフォルトの名無しさん
09/11/22 17:09:57
型安全がどういう意味をもってるのか勉強したほうがいい。
7:デフォルトの名無しさん
09/11/22 18:45:15
>>4
静的型言語だから無理。動的にソースコードやバイトコードを生成してロードするという手が使えなくはないが、そういうことしたいわけじゃないだろ?
8:デフォルトの名無しさん
09/11/22 19:51:29
でもそれってenumが導入された1.5じゃできないだろ。
9:デフォルトの名無しさん
09/11/22 20:10:35
7が言ってるのはプログラム中で.classファイルを生成して
クラスローダにその.classを読み込ませるってことでしょ。
enumをバイトコードなりソース生成してコンパイルすれば、
動的に生成できなくもないって話。(そんなプロジェクトあったら抜けたいけどw)
10:デフォルトの名無しさん
09/11/22 21:35:32
だからjreにjavacがないから無理。
11:デフォルトの名無しさん
09/11/22 21:42:34
なんでJREインプロセスでjavacしなきゃいけないって話になるんだよ。w
シェル呼び出しからjavacして.classを作ってもいいわけだろ。
要はクラスローダがロードできればなんでもいいわけだから。
12:デフォルトの名無しさん
09/11/22 22:07:43
JDK必須にしろとwww
13:デフォルトの名無しさん
09/11/22 22:11:43
サーバサイドには普通JDK入ってるからね。
まあそんなコード組んできた奴がいたらクビにするけど。
14:デフォルトの名無しさん
09/11/22 22:12:33
jdkって再配付していいの?
15:デフォルトの名無しさん
09/11/22 22:21:41
できるよ。Linuxではディストリ独自の配布パッケージ作ったりしてるし。
16:デフォルトの名無しさん
09/11/22 22:35:33
いや2次配布のこと。それもsun jdkを勝手に再配付していいの?
17:デフォルトの名無しさん
09/11/22 22:43:41
URLリンク(java.sun.com)
この文書のセクション
Java SE Runtime Environment の再配布
の2行目あたり(JDK)にあるかな。
18:デフォルトの名無しさん
09/11/22 23:01:39
たしかにjdkもjreもアプリと別とした再配付は同じ条件みたいだね。
ただパッケージ化(アプリに内蔵)はjreのみのようだけど。
19:デフォルトの名無しさん
09/11/23 00:07:29
schedule メソッドで起動したタイマーをこのように書いたのですが、停止ができません
どこが間違ってるのでしょうか?
public void actionPerformed (ActionEvent e) {
Object obj = e.getSource();
Timer timer = new Timer();
Task task = new Task();
// タイマー起動
if ( obj == mi1) {
timer.schedule(task, 0, 1 * 60 * 1000);
}
// タイマー停止
else if (obj == btn2 || obj == mi2)
{
timer.cancel();
timer = null;
task = null;
System.out.println("Timer stop");
}
}
20:デフォルトの名無しさん
09/11/23 00:09:51
>>19
> Timer timer = new Timer();
タイマー新しく作り続けてるやんけ
21:デフォルトの名無しさん
09/11/23 00:24:14
>>20
thx
わかった^^が、しかし、どこでタイマーこさえようか・・・
22:デフォルトの名無しさん
09/11/23 00:31:44
ヒント:変数のスコープが一つ広いところ
23:デフォルトの名無しさん
09/11/23 00:36:14
>>22
デキマスタ
24:デフォルトの名無しさん
09/11/23 00:41:04
//void cpn(_Complex double z) {printf(" [%f, %f]\n", __real__ z, __imag__ z);}
void mains(int argc, char** argv) {
char *a1;
if (argc<=1) a1="45"; else a1=argv[1];
double s=atof(a1)*3.14f/180f;
cpn(2*cexp(s));
}
int main(int argc, char** argv) {
mains(argc,argv);
return (EXIT_SUCCESS);
}
//void cpn(_Complex double z) {printf(" [%f, %f]\n", __real__ z, __imag__ z);}
void mains(int argc, char** argv) {
char *a1;
if (argc<=1) a1="45"; else a1=argv[1];
double s=atof(a1)*3.14f/180f;
cpn(2*cexp(s));
}
int main(int argc, char** argv) {
mains(argc,argv);
return (EXIT_SUCCESS);
}
25:デフォルトの名無しさん
09/11/23 00:43:56
ごめん誤爆った。
974+2 :デフォルトの名無しさん [] :2009/11/22(日) 21:16:41
シリアライズで質問です。
class clss {
int[] arry
clss(int[] a){arry=a;}}
みたいなクラスを
int[] a= {0,1};
int i=0;
while(true) {
a[0]=i++;
clss c= new clss(a)
writeObject(c);
if(i<100)break;
}
というようにループで書き出してそのファイルをデシリアライズすると
全ての取り出したインスタンスが
a={0,1}
になっているようなのですがこれは解決可能なのでしょうか?
992+1 :デフォルトの名無しさん [↓] :2009/11/22(日) 23:23:08
>>974
writeObjectに同じインスタンスを複数回与えたら、
readObjectもその回数だけ同じインスタンスを返す仕様
同じインスタンスが異なる値を持つことは出来ないから、そのような結果になる
writeObjectのそのような振る舞いを実装するために、
ObjectOutputStreamは一度書き込んだオブジェクトを全部覚えていて、
同じインスタンスは二度書き込まず前回書き込んだインスタンスの参照だけを書き込むようになっている
readObjectも最初と同じインスタンスを返すために、一度読み込んだインスタンスは全部覚えている
ObjectOutputStream#writeUnsharedとかObjectInputStream#readUnsharedを使ってみたらどうかな
26:デフォルトの名無しさん
09/11/23 00:45:39
>>23です、ついでにどなたか、雑談に付き合ってくださいませ
java 初めて3ヶ月ほどで、それまでC/C++ の組込みをやってました
java メソッドが豊富でわかり易いですね、すごく楽に実装できますね
ところで、C/C++ の組込みでは(use MFC)、ボタン押下でタイマーを起動する場合とか
ボタン押下したスレッドの一意性を担保するのに、単純なイベントドブリンだけではなく
めんどくさいけど、スレッドID の比較をチェックしてたんだけど、
java 屋さんではどんな感じですか?
27:デフォルトの名無しさん
09/11/23 00:48:46
MFCだけでdotnetすら知らないなら、まったく考え方を変えた方がいい。
イベントドリブンという概念すら(当たりまえ過ぎるから)存在しない。
チュートリアル(英語)にそってapplet,swingと普通にやるといいだろう。
28:デフォルトの名無しさん
09/11/23 00:55:58
>>27
そんな感じですか、隣の席のやつが、C# で組込みのファイルシステムなどの実装をやってて
時々コードを読んだりしてたけど、dotnet は確かにあんまり知らないね
なんてたっけ、関数名は忘れたけど、コールバックなんか簡単に実装してたような印象はある、
便利そうだった、java にもあるのかな?
29:デフォルトの名無しさん
09/11/23 01:00:03
それで、前スレのまとめ>>25はjavaがバグってたってことか?
当然finish(reset?)だったかの初期化をしている前提でもバグ。
30:デフォルトの名無しさん
09/11/23 01:04:33
その様子だと、MFCで甘えてばかりでwin32apiなんか触ったことすらないんだろうな。
下らない自尊心なんか捨てて、初心に帰って全くの一からやり直したほうがいいだろうな。
31:デフォルトの名無しさん
09/11/23 01:10:17
java,dotnetともに似た機能はあるが、(シングルスレッドでの)コールバックという概念すらない。
お前は10年以上遅れてるプログラミングをやってるってこと。
32:デフォルトの名無しさん
09/11/23 01:15:09
>>28 です
>>30
なかなか手厳しいですな、さすが2ちゃんねるといったところですね
Win32api はそれはそれは、お世話になってましたよといいますか、それで飯くってるんで
最後に、java のリバースエンジニアリングについてですが
職場では、Visual studio や、ツールを使って、ある程度ですが、実行コードを
逆アセンブルしにくくすることを義務付けられていたのですが(完璧に非可逆性を保障しなくてもよい)
java でそのようなことができる、ツールとか手法があれば教えてもらえませんか。
33:デフォルトの名無しさん
09/11/23 01:17:48
オブファスケータ (obfuscator) でぐぐる
34:デフォルトの名無しさん
09/11/23 01:24:05
>>31
java にtemplate とかあんの?boostや、loki使えば、C++ とjava ではF1とオートマの軽自動車
みたいなもんだよね、別にオートマの軽自動車が悪いと言ってるわけではないよ。
35:デフォルトの名無しさん
09/11/23 01:32:30
逆汗なんか普通にできるし、出来ないとバイトコード上のセキュリティー問題に発展する。
というか逆アセンブラはjvmプラットの一機能(javap)に過ぎない(ただjavapの生成コードはjava languageではない)。
javaやwebやオープンソースは、msみたくクローズドで相手の腹の探りあいって世界じゃないから。
それにコーディックや圧縮・特許ものたいなクローズドかつ泥臭いのはnativeと称してgccでやるものであり、難読化とかはオープンとかjvmのプログラムが担当するものではない。
msが新技術を提唱して、しかしすぐ開発者を裏切ってきた歴史を知ってるなら、そいうクローズドじゃないプロジェクトに接すればmsはいかに狭い世界だったかを知って目が覚めるだろうな。
36:デフォルトの名無しさん
09/11/23 01:40:35
msのvisual c/c++で組込?
それもMFCでしょ。
携帯ならjavaだろうし…何の分野での組み込みなの?
37:デフォルトの名無しさん
09/11/23 01:46:04
>>33、>>35
thxです
コーデイックの解析は一から解析しようとすると、難しいといいますか、要領がよくないと
困難でしょうね、ffmpeg のソースコード読めばすぐにわかりますが。
どうもとりとめもない雑談に付き合ってくれてありがとう、そういえば
最新のgcc、C++0x対応してるんだろうか、明日調べまーす。
38:デフォルトの名無しさん
09/11/23 01:47:05
foumula 1って組織が分裂して、もう終わった物語なんだよね。
SUNはマクラーレン+サンのころが一番輝いてたな…
39:デフォルトの名無しさん
09/11/23 01:53:12
>>37
win32apiのスタイルでグーイを考えてるなら、gnome(linux)かopengl(jogl)がいいと思うよ。
フレームワーク自体が、コールバックとかイベントドリブンとか旧時代の産物のままだから、多分awt,swingなんかよりもすぐとっつくだろう。
40:デフォルトの名無しさん
09/11/23 02:05:45
正直コールバックやイベントドリブンの概念が時代遅れとは思わない。
41:デフォルトの名無しさん
09/11/23 02:06:11
>>7
では奈美恵を性的にダイナミックな女にすることはできますか?
性的言語で攻めればいいですか?
42:デフォルトの名無しさん
09/11/23 02:09:48
>>41
伺か?w
43:デフォルトの名無しさん
09/11/23 02:12:19
>>40
マルチスレッドならそうとも言えるけど・・・多分シングルスレッドなんだろうし・・・
44:デフォルトの名無しさん
09/11/23 02:36:41
javaとかC++のようなスレッドを言語でサポートしていない言語ではスレッド越しは苦痛ですな
45:デフォルトの名無しさん
09/11/23 02:51:36
>>44
windows環境しか知らないとそうかもね。w
46:デフォルトの名無しさん
09/11/23 02:54:29
ですよねー!
やっぱり知識がある人は違うなー!!
47:デフォルトの名無しさん
09/11/23 02:56:25
erlangとか言い出す奴は不能
48:デフォルトの名無しさん
09/11/23 03:07:45
というか、java/jvmプラットならそもそもwindows第一って言う発想はおかしいんだが。
webとかapplet(javafx,flash)さらにはdbアクセスとかじゃない、windows native(ms officeとか)だけなら素直にdotnet/directx使えよ。
49:デフォルトの名無しさん
09/11/23 08:53:56
swing のJOptionPane.showInputDialog を使って、こんな感じで、一個のテキストボックスを表示して
文字列を取得しているのですが、二個のテキストボックスを表示させて、文字列を取得することはできませんでしょうか。
private String inputDialog(String str) {
String result = JOptionPane.showInputDialog( this, str, "インフォメーション", JOptionPane.INFORMATION_MESSAGE);
return result;
}
50:デフォルトの名無しさん
09/11/23 12:36:48
>>48
>>45はきっとタダの燃料だから・・・
51:デフォルトの名無しさん
09/11/23 12:37:34
>>49
JOptionPane調べてもなさそう?
なら自分でダイアログつくればいいじゃない
52:デフォルトの名無しさん
09/11/23 13:44:05
>>51
なさそうですね
53:デフォルトの名無しさん
09/11/23 16:14:59
たとえば、
final JPanel pn = new JPanel();
final JTextField tf1 = new JTextField();
final JTextField tf2 = new JTextField();
pn.add(tf1);
pn.add(tf2);
int res = JOptionPane.show...Dialog(null,pn,...);
if(res == JOptionPane....){
final String text1 = tf1.getText();
final String text2 = tf2.getText();
}
こんな感じでメッセージにコンポーネントを指定することで複数取得することはできるよ。
54:デフォルトの名無しさん
09/11/23 18:28:31
ファイルの入出力について質問です。
a.txtの内容を b.txtにコピーしたいのですが、
以下サンプルコードの実行の仕方がわかりません。
コマンドプロンプトで
C:\myjava>java WriteFile1
C:\myjava>a.txt < b.txt
と記述してもエラーになります。
困っております。お願いします。
public class WriteFile1 {
public static void main(String[] args){
if(args.length != 1) {
System.out.println("使用法: java WriteFile1 作成ファイル");
System.out.println("例:java WriteFile1 output.txt < input.txt");
以下略
55:デフォルトの名無しさん
09/11/23 18:42:18
なんでそこで改行するんだ
例にある通り
C:\myjava>java WriteFile1 a.txt < b.txt
ってやれ
56:デフォルトの名無しさん
09/11/23 21:23:01
URLリンク(www.searchman.info)
>>tomcatPluginV321.zip を
解凍すると、com.sysdeo.eclipse.tomcat_3.2.1というディレクトリができます。
これを、eclipse のpluginsディレクトリに保存します。
私の場合ですと、C:\eclipse\plugins に保存します。たったそれだけです。
この設定で行ってもeclipseの設定にtomcatが表示されないのですが何故でしょうか…。
57:デフォルトの名無しさん
09/11/23 21:50:08
Eclipseはバージョンなに使ってんの?
つーかWTPでいいじゃねーか。
58:デフォルトの名無しさん
09/11/23 23:01:40
下記を実行したら81E0となります。
なぜ、こうなるのでしょうか?
SunのVMで5を使っています。
byte[] b = new byte[2];
b[0] = (byte)0x87;
b[1] = (byte)0x90;
HexDumpEncoder dump = new HexDumpEncoder();
System.out.println(dump.encode(new String(b,"Windows-31J").getBytes("Windows-31J")));
59:デフォルトの名無しさん
09/11/23 23:12:09
>>58
Windows-31Jのうちいくつかの文字はUnicodeから変換するときに複数の
コードポイントがあるため、そういうことが起きる。
URLリンク(www.atmarkit.co.jp)
60:デフォルトの名無しさん
09/11/23 23:20:43
>>59
そういうことなんですか。文字コードはややこしいですね・・。
ありがとうございました。
61:デフォルトの名無しさん
09/11/23 23:22:49
スレがカオスってるな
62:デフォルトの名無しさん
09/11/23 23:24:48
パラレルGCとコンカレントGCは同じものなのでしょうか?
今、GCの時間を短くしようとしているのですが、どういうチューニングをすればよいのでしょうか。
FullGCを起こさないように、ヒープを大きくして、
ヒープ拡張時のオーバーヘッドをなくすため初期ヒープサイズと最大ヒープサイズは同じにしました。
それでも1回あたりのGCの時間が100ms位かかっており、システムのスループットに影響してます。。。
63:デフォルトの名無しさん
09/11/23 23:27:51
前スレでシャローコピーとディープコピーについて質問した者です。
参考になりました。分からない事柄を調べまたひとつ勉強させていただきました。
感謝です。ありがとうございました!
64:デフォルトの名無しさん
09/11/23 23:46:53
別もんだよ。
URLリンク(www.atmarkit.co.jp)
ここ見れ。
平均スループットは悪化してる点に注意ね。
65:デフォルトの名無しさん
09/11/24 16:28:31
1桁の数字を入力したらEnterを押さなくてもすぐ次の処理を行うようにしたいのですが
どのようにすれば良いでしょうか?
66:デフォルトの名無しさん
09/11/24 16:57:09
289 :デフォルトの名無しさん :2005/06/01(水) 15:27:21
javaだけではフッキングは無理だな。 JNIでAPI呼ばないと。
TextFieldなんかで定型入力させるのか?
だったらリスナで十分だ。
67:デフォルトの名無しさん
09/11/24 17:33:01
classにpartialを付けてもエラーになるんですけど、
どうやってファイルを分けるんですか?
68:デフォルトの名無しさん
09/11/24 17:50:27
そんな機能ねーよ
69:デフォルトの名無しさん
09/11/24 17:57:07
C#じゃないんですから・・・
70:デフォルトの名無しさん
09/11/24 18:26:34
不便ですね・・・
71:デフォルトの名無しさん
09/11/24 18:27:59
一向に進歩のない言語だというのは実に正しい
72:デフォルトの名無しさん
09/11/24 19:57:08
わかりやすいからいいじゃん。
73:デフォルトの名無しさん
09/11/24 20:41:05
partialは良い機能だと思うが、C#のは拘束が弱くて嫌い。
ファイル名規則をClassName$Layout.javaみたいに限定して欲しい。
まあそんなのよりヒアドキュメントを用意してくれ。ラムダ式とか後でいいだろ。
74:デフォルトの名無しさん
09/11/24 20:41:12
C#はむしろ変えすぎ。2.0とそれ以降は、CとC++くらい違う。
LINQなんて追加するんならC##とでもしろと。
75:デフォルトの名無しさん
09/11/24 20:43:46
JavaユーザーとC#ユーザーって仲悪いの?
76:デフォルトの名無しさん
09/11/24 20:48:26
半端なく
77:デフォルトの名無しさん
09/11/24 20:52:42
俺は概ね認めているが、Nullableという不毛なクラスのせいでイマイチな評価になっている。
半端なところのパフォーマンスに拘った言語仕様だから、エスケープ解析みたいな試みにならない。
78:デフォルトの名無しさん
09/11/24 20:54:17
C#(win)とJava(win以外)を比べる時点で間違ってる。
79:デフォルトの名無しさん
09/11/24 21:01:39
C#のGUIが使いやすいのは、レイアウトマネージャを用意する必要がないからって部分が大きいしな。
80:デフォルトの名無しさん
09/11/24 22:04:38
JAVAでテトリスを作りたいのですが、参考になりそうなHPを知ってたら教えて下さい
81:デフォルトの名無しさん
09/11/24 22:10:13
Javaでゲーム作りますが何か?
82:デフォルトの名無しさん
09/11/24 22:11:42
URLリンク(www.nintendo.co.jp)
83:デフォルトの名無しさん
09/11/25 05:11:20
>>79
かくいう.NETも、WPFでレイアウトマネージャ取り入れてるけどな。
84:デフォルトの名無しさん
09/11/25 15:26:04
コレクションのinstanceofについて質問です。
Map<String, String> map;
Object obj = map;
if (obj instanceof Map)
↑このifは通ると思いますが、mapの型(String,String)としてinstanceofするにはどうすればいいのでしょうか?
instanceof通った後に型付きでキャストすれば動きそうですが、
型チェック不足でwarningが出てしまいます。
85:デフォルトの名無しさん
09/11/25 19:12:39
実行時の段階では元の型パラメータを取り出すことはできません。
instanceofのような動的型チェックには、型パラメータを含めることはできません。
86:デフォルトの名無しさん
09/11/25 19:35:44
リフレクションで取ってifじゃだめ?
87:デフォルトの名無しさん
09/11/25 20:02:49
swing のボタンをグレイアウトし操作無効にするメソッドを教えてください
88:デフォルトの名無しさん
09/11/25 20:05:29
>>87
setEnabled
89:デフォルトの名無しさん
09/11/25 20:44:52
>>88thx
90:デフォルトの名無しさん
09/11/25 22:16:24
JAVA、プログラミング初心者のものです
分け合ってclassファイルの逆コンパイルし中身を見たいのですが
ぐぐっても解決策を見出すことができません
そこで質問させてください
ぐぐると
『
eclipseとjadclipseをインストールして、jadのパスをeclipseに通して、
File>OpenFileで、開こうとしたらエラーメッセージが出たので、
根本的に間違ってたのかなと。
jadの使いかた調べてみます。
Could not open the editor: The Class File Viewer cannot handle the given input ('org.eclipse.ui.ide.FileStoreEditorInput').
>jad -s xxxx.class output.jadで見ることができました。
』
上記のようなことが検索されました
私も 上記のように
『Could not open the editor: The Class File Viewer cannot handle the given input ('org.eclipse.ui.ide.FileStoreEditorInput'). 』
というエラーが出ます
しかし
『>jad -s xxxx.class output.jadで見ることができました。』
上記の意味が理解できずに解決できないでいます
なにとぞご指示・ご指導のほどよろしくお願いします
参考にしたサイト
URLリンク(hpcgi2.nifty.com)
URLリンク(www.atmarkit.co.jp)
91:デフォルトの名無しさん
09/11/25 22:21:00
URLリンク(java.decompiler.free.fr)
このデコンパイラがおすすめ。
eclipseプラグインもあるよ。
92:デフォルトの名無しさん
09/11/25 22:44:05
>>91
ありがとうごさいます
あんなに苦労したことがこんな簡単にできるとは思いませんでした
ほんとに助かりました。
93:デフォルトの名無しさん
09/11/26 03:11:57
与えられた文字列がディレクトリを指すかどうかをテストしようとして
new File(s).isDirectory() を使ってたんですが、 Windows 上で s が
\\server\share の形になっていると数秒の待ち時間が発生してしまうことがわかりました。
ネットワークにサーバー名とか(?)の問い合わせをしているようです。
また、一時的にサーバーが利用できないときに false になってしまうのも望ましく
ありません。
これを回避するため、任意の文字列がファイルやディレクトリを指しうるものかどうか、
文字列の解析だけで(ファイルシステムやネットワークへのアクセス無しで)判別する
方法を探しているのですが、標準のクラス内に使えるものはないでしょうか?
例えば Windows ならパス文字列に含まれない文字がいくつかあるので、それが
含まれているかどうかだけをテストする、とかいうやつです。はじめは File のメソッドに
isValid() とかあるだろうと思ったのですが、見当たりませんでした。
94:デフォルトの名無しさん
09/11/26 05:45:13
JavaってJITコンパイルという方式のようですが、逆に言うとソースコードを見られてしまうという事ですか?
95:デフォルトの名無しさん
09/11/26 06:17:09
yes
>>91
96:デフォルトの名無しさん
09/11/26 07:03:41
なるほど、ありがとうございます
97:デフォルトの名無しさん
09/11/26 09:48:32
>>93
> 標準のクラス内に使えるものはないでしょうか?
ない。
98:デフォルトの名無しさん
09/11/26 10:22:21
Jadはtry-catch-finallyがあって,なおかつ内部でモニタの開放とかしてると全く逆コンパイルに失敗して涙目
99:デフォルトの名無しさん
09/11/26 19:46:41
J2SE 1.6で、java.lang.management.OperatingSystemMXBeanからいくつかのメソッドが削除されたのはどうしてでしょう?
また、他のオブジェクトで代替/回避する方法はありますか?
getTotalPhysicalMemorySizeやgetFreePhysicalMemorySizeが使えなくなっていたのは少々困りました。
現在、リフレクションを使って無理やり取得していますが、1.5で実装されたモノが1.6で削除(非推奨ではなく)されたのは、何か大きな不具合があった為でしょうか?
100:デフォルトの名無しさん
09/11/26 20:31:44
>>99
java.lang.management.OperatingSystemMXBean にはそんなメソッドないぞ。
com.sun.management.OperatingSystemMXBean と混同しとるんじゃないか?
101:99
09/11/26 22:49:43
>>100
・・・申し訳ありませんでした、大当たりです。
com.sun.management.OperatingSystemMXBeanは(Eclipseでは)ビルド・パスの設定で明示的に許可してやらないと見れないので、取り違えてしまったようです・・・。
バカな質問にすばやくお答えいただき、ありがとうございました。
102:デフォルトの名無しさん
09/11/27 00:18:06
今からjavaやろうと思ったら
普通に1.6でいいんですよね?
これはいい。これはやめとけみたいなのありますか?
103:デフォルトの名無しさん
09/11/27 00:35:04
GUIについて質問です
マウスイベントを用いて何度か図形(drawLineやOval)を描画する
プログラムを作ってるんですが、新たに図形を描画させると
以前描画した図形が消えてしまいます。
super.paint(g)をソースから消すと以前描画した図形も残るんですが
処理速度がものすごく遅くなります・・・
ちなみに引数(g)ってのは
public void paint(Graphics g)
のgです
処理速度が遅くならずに以前描画した図形を残せる方法はありませんか?
104:デフォルトの名無しさん
09/11/27 13:05:38
>>103
再描画してんじゃないの?
ソースがないからなんともいえんが
105:デフォルトの名無しさん
09/11/27 13:31:18
>>102
6.0とも言う
106:103
09/11/27 13:32:09
すみません解決しました・・・
>>104さんのおっしゃる通り再描画していました
なのでpaintメソッドと別にupdateメソッドを作り
public void update(Graphics g) {
paint(g);
}
というふうに直接paintメソッドを呼び出したら上手くいきまいした
107:デフォルトの名無しさん
09/11/27 20:30:30
質問です。以下のホニャララの部分を、"点aは(x,y)"および"点bは(x,y)"と、
インスタンス名と同じ名前になるように表示させたいのです。
初心者の質問で申し訳ないのですが、何か良い案を教えてください。
class Point2D{
double x;
double y;
Point2D(double x,double y){
System.out.println("点ホニャララは(" + x + "," + y + ")" );
}
}
class Test{
public static void main(String[]args){
Point2D a = new Point2D(Double.parseDouble(args[0]),Double.parseDouble(args[1]));
Point2D b = new Point2D(Double.parseDouble(args[2]),Double.parseDouble(args[3]));
}
}
108:デフォルトの名無しさん
09/11/27 20:47:10
>>107
これは初心者ってか素人のレベルだな
109:デフォルトの名無しさん
09/11/27 22:19:59
>>107
そもそもインスタンスに名前なんてないよ
ソースコード上の「a」とか「b」ってのはインスタンスの名前じゃないよ
名前を教えなきゃいけない
110:デフォルトの名無しさん
09/11/27 23:18:13
>>108
残念なコを見るような目で見ながら教えていただけると助かります。
>>109
書き方が悪かったようです。それは理解しています。
僕の頭では、("点" + k + "は(" + x + "," + y + ")" );/*kはString型*/
として、条件文を用いてaとbを区別するか、引数を用いるかしか考え付きませんでした。
書き忘れましたが、課題の一部(質問した部分が課題なわけではない)です。
メッソドの形が指定されているので、引数は利用できません。
となると、条件文にしようと考えたわけです。
例えばif(){k="a";}if(){k="b";}とするわけですが、()の中身が思いつきません。
int n=0;n++;としてn==1 or n==2で判別しようとしたり、条件にメソッドを使用しようとしたり、
色々考えましたが、できませんでした。
素人の為知識量が不足しています。
条件文を用いる他に、スマートな方法がありそうですし。
何か、ご助言くださればありがたいです。
111:デフォルトの名無しさん
09/11/27 23:26:31
>>110
お前、態度でかいぞ
トーシロの無能が何言ってんだ
112:デフォルトの名無しさん
09/11/27 23:40:04
フィールド(メンバ変数)は名前を持つが、
パラメータ(引数)やローカル変数は名前を持たない。
113:デフォルトの名無しさん
09/11/27 23:51:22
「点ホニャララは」の部分はmain側で表示してから
Point2Dのコンストラクタを呼び出す。
114:デフォルトの名無しさん
09/11/28 00:04:34
>>110
後出しこわい
> メッソドの形が指定されているので、引数は利用できません。
なんで?
どうしてもシグネチャを変更できないのなら,そもそもコンストラクタで名前を表示しようなんて考えてはいけない.
ソースいじくれるようだし,コンストラクタ増やしたら?
115:デフォルトの名無しさん
09/11/28 00:06:20
>>111
丁寧に書こうとしたら、こんなんになってしまいました。
不快にさせてごめんなさい。
>>112
助言ありがとうございます。
>>113
!?。それだ・・・!!!
正直、目から鱗です。
素人な質問に答えていただきありがとうございました!
助かりました。
116:107
09/11/28 00:12:29
>>114
>どうしてもシグネチャを変更できないのなら,そもそもコンストラクタで名前を表示しようなんて考えてはいけない.
なるほど。参考になります。
>>113とともに、コンストラクタを増やすことでも解決できますね。
自分の馬鹿さ加減がイヤになります。
お答えいただきありがとうございました。
117:デフォルトの名無しさん
09/11/28 00:32:44
showInputDialog でパスワード入力時に、入力文字を*****となるテキストフィールドを使いたいのですが
どのようにしたらできますか?
118:デフォルトの名無しさん
09/11/28 01:23:23
というか大抵のケースでコンストラクタにパラメータ付ける場合は
パラメータなしでnewされたくない
=パラメータは意味のあるものだから必須
=メンバ変数に格納
とかじゃねーの
そうでないならコンストラクタなんてパラメータ付けずに
setterで外からはめさせりゃいいじゃん
119:デフォルトの名無しさん
09/11/28 01:39:33
マスをクリックした時に一回、勝敗が決まった時に3回
対戦者のテーマ音を鳴らす三目並べゲームを作ってるんですが
Xが勝った時にテーマ音が鳴りません
以下は自分で作ったプログラムです
URLリンク(www.dotup.org)
どうしてXのときだけ鳴らないか気付いた方はご教授おねがいします
120:デフォルトの名無しさん
09/11/28 01:49:32
まずクラス化したらどうだい?
Playerクラスに纏めてしまえば変なswitch文にまどわされる事はない。
121:119
09/11/28 03:25:54
すみません、再生する音楽ファイルを変更したら解決しました
おそらく、再生時間が極端に短いとloop再生できないようです・・・
122:デフォルトの名無しさん
09/11/28 10:31:27
>>117ですが
お願いします。
123:デフォルトの名無しさん
09/11/28 11:46:51
>>117
このあたりが参考になるのでは
URLリンク(java.sun.com)
124:デフォルトの名無しさん
09/11/28 11:59:12
JAVAで関数ポピンタみたいなことをやるには
どうすりゃいいの。
125:デフォルトの名無しさん
09/11/28 12:01:10
関数ポピンタってなんですか?
126:デフォルトの名無しさん
09/11/28 12:12:33
アイアムザパニーズなんですけどもザバで風呂釜を綺麗にするには?
127:デフォルトの名無しさん
09/11/28 12:13:41
いわゆるショッピング症候群です
128:デフォルトの名無しさん
09/11/28 12:14:34
ヌルポピンタ
129:デフォルトの名無しさん
09/11/28 14:53:57
>>123
Thx
130:デフォルトの名無しさん
09/11/28 16:36:21
>>124
動的にいろいろな関数のボピンタを渡す代わりに、動的にいろいろなオブジェクトを渡して、
それらのオブジェクトが共通に実装しているメソッドを呼ばせる。
131:デフォルトの名無しさん
09/11/28 18:47:21
ポピンタが使えるようになったら初心者卒業だね!
132:デフォルトの名無しさん
09/11/29 05:59:57
java seが普通のjavaで
java eeがjspやサーブレットまで含めたjavaということでしょうか?
133:デフォルトの名無しさん
09/11/29 12:18:39
そんなところ
134:デフォルトの名無しさん
09/11/29 14:06:18
ポピンタがなんだかわからなかったから、ググってみたらgoogle先生が教えてくれたww
135:デフォルトの名無しさん
09/11/29 14:47:45
クラス、継承、オーバーライドまでは使えそうですが、
ポリモーフィズム、抽象クラス、インタフェースとかになってくると
もう使いこなせる気がしません。
どういうものか理解はできていますが、自分でいつ使えばいいのか
判断が難しそうです。
皆さんはどうやって使えるようになりましたか?
使わなくても問題ないでしょうか?
136:デフォルトの名無しさん
09/11/29 14:52:58
俺は最近
インターフェイス=コールバック用
抽象クラス=計算戦略の概略の形を作る用
になってきた
137:デフォルトの名無しさん
09/11/29 15:20:15
使っているうちにわかってくると思えばいいんでしょうかね。
前にC++をしばらくいじってみたとき、結局最初から最後までOOPらしいものはできませんでした。。
138:デフォルトの名無しさん
09/11/29 16:00:36
>>135
インターフェース⇒使う側は「×××という機能(メソッド)が使える」ということだけわかっていればいい。中身は気にしない。
継承関係からは独立しているので、インターフェースを実装したクラスは中で何をやっていてもいい。
ファイルに書き込む代わりにネットワーク越しでサーバにアップロードするとか。
抽象クラス⇒処理の流れの大枠は決まっているが、一部の処理だけ使う側にまかせたい。その部分は使う側が決めなければならないので、抽象クラス自身は単独では完結していない。
ポリモフィズム⇒使う側は一律、writer.write(data)みたいに書くが、このとき実際に書き込む先はファイルだったりメモリだったりDBだったりどっかのサーバだったり。
要は、呼び出し側がif〜else if〜elseやswitch〜caseで切り替えるんじゃなくて、呼び出される側が同じシグネチャのメソッドを実装した中身の違うクラスを用意する。
なるべくをif文やswitch文を書きたくないので、無いと生きて行けない。
139:デフォルトの名無しさん
09/11/29 16:05:14
>>135
インタフェース=ポリモルフィズムのための規格
抽象クラス=雛形
140:デフォルトの名無しさん
09/11/29 16:10:15
>>138-139
うーん、難しいですね…。
違う本も読んでもっと勉強してみます。
抽象クラス、インタフェースの意味・目的はさておき、どのように身に付けましたか?
141:デフォルトの名無しさん
09/11/29 17:05:12
標準のコレクションクラスをひととおり眺める
それらを具象クラス (ArrayList, LinkedList) ではなくインタフェース (List) で使ってみる
142:デフォルトの名無しさん
09/11/29 18:17:37
同じ内容のオブジェクトのハッシュコードは等しいが
異なる内容のオブジェクトのハッシュコードは必ずしも違う値になるわけでは
ないと聞いたのですが、ハッシュコードってどのような場面で使用されるのですか?
143:デフォルトの名無しさん
09/11/29 18:21:19
>>142
例えばjava.util.HashMapの内部で使用されてる
144:デフォルトの名無しさん
09/11/29 18:22:58
Hashtableとか
ハッシュ値はクラスの設計者がどんな値使うか決めていい
必要であれば全部同じ値を返してもいい
145:デフォルトの名無しさん
09/11/29 19:10:26
よく指摘される事項ではあるけど、
equalsをオーバーライドしたクラスは必ずhashcodeもオーバーライド必須ね。
これ忘れて潜在的なバグが放置されてる業務プロジェクトは星の数ほど存在する。
146:デフォルトの名無しさん
09/11/29 19:14:27
仕様です。
147:デフォルトの名無しさん
09/11/29 19:22:07
>>143-145
ありがとうございます。
HashMapの実装の仕方を見たことは無いのですが
getしたとき内部では高速化のためhashcode毎に分けられており
最終的にkey紐づくものを返すというイメージなのですか?
148:デフォルトの名無しさん
09/11/29 19:42:49
そうだね。
ハッシュマップは↓のようなデータ構造のイメージ
hash1 : {key1:val1, key4:val4, key6:val6}
hash2 : {key2:val2, key3:val3, key5:val5}
hash3 : {key7:val7}
key3でgetした場合、まずkey3のhashcodeであるhash2でgetして、
取得されたサイズ3のコレクションに対して、key3とのequalsが実行される。
最悪7回equalsが必要(size7のMapだから)なところ、
HashMapの実装であれば3回のequalsですんでいる。
実際には値がより均等に分散するアルゴリズムでhashcodeが計算されるため、
よほどHashMapのサイズが大きくならない限り
同じhashcodeにぶら下がるオブジェクトは多くて1個で収まる。→ 超速い
149:デフォルトの名無しさん
09/11/29 20:25:55
>>148
解説ありがとうございます。
理解できました。
150:デフォルトの名無しさん
09/11/29 21:50:57
javaでファイル出力処理時に、ファイル名「現在の日付+.txt」としたいのですが、
その設定をjavaのpropertiesファイルに書いておいてそこから呼び出すためには
propertiesファイルに記載したら良いのでしょうか?
たまに固定文字列でファイル出力を行いたいため、
プロパティファイルを編集するだけで、日付つきファイルか固定かを変えられるようにしたいのです。
151:デフォルトの名無しさん
09/11/29 22:15:23
予め決めておいたパターンが(プロパティファイルの値のなかに)出現したら
現在時刻に置き換えるようにしておけば?
152:デフォルトの名無しさん
09/11/29 22:17:56
レスありがとうございます
その方法もいいかもしれませんが、プロパティファイル内の設定だけで対応したいです
153:デフォルトの名無しさん
09/11/29 22:20:21
プロパティファイル読み込む処理は自分で書いたんでしょ?
そこで置き換えればいいんじゃないの?
154:デフォルトの名無しさん
09/11/29 23:44:19
実行可能なjarファイルを作成したのですが、
これを別のディレクトリに移動してから実行すると動きません。
jarファイル内部のpropertiesファイルが読み込めない(見つからない?)ようなのですが、
プログラム中にpropertiesファイルの相対パスを指定しただけではダメなのでしょうか?
155:デフォルトの名無しさん
09/11/29 23:52:13
一体どんな指定をしてるんだ?
156:デフォルトの名無しさん
09/11/29 23:57:01
>>154
jarファイル内部のはClassLoader使ってURL取得するといいよ。
hoge/
Hoge.class
hoge.properties
となってたら
url = Hoge.class.getResource("hoge.properties");
もしくは絶対パス
url = Hoge.class.getResource("/hoge/hoge.propertis");
157:デフォルトの名無しさん
09/11/30 01:55:11
でも、それじゃクラス全体がメモリにロードされちゃいませんか?
確かクラスは自動でアンロードされなかったし問題ですよ。
158:デフォルトの名無しさん
09/11/30 02:08:31
でっかい釣り針が...
159:デフォルトの名無しさん
09/11/30 06:44:15
java -cp abcde.jar:lib/opencsv-2.1.jar jp.aaaaa.Guiframe
と実行を試みると、
NoClassDefFoundErrorがjp/aaaaa/Guiframeで出ます。
java -cp abcde.jar jp.aaaaa.Guiframe
と入力すると正常に動作しますが、この場合はlibにPathが通ってないため
不十分な動作になります。
自分では原因が検討もつかず、悩んでいます。
よろしくお願いします。
160:デフォルトの名無しさん
09/11/30 06:56:58
>>159
パス区切り記号は :(コロン)ではなく、;(セミコロン)です。
161:デフォルトの名無しさん
09/11/30 10:40:32
Winではね
162:デフォルトの名無しさん
09/11/30 10:44:07
カラムヘッダに、日付と曜日を順々に2週間分入れてテーブルを作成したいのですがうまくいきません
どこがいけないのでしょうか?
public class CalendarModel extends AbstractTableModel {
.........
public String getColumnName(int columnIndex) {
calendar = Calendar.getInstance();
String[] columns = new String[14];
String dow = null;
calendar.add(calendar.get(Calendar.DAY_OF_WEEK), columnIndex);
dow = getDOW(calendar.get(Calendar.DAY_OF_WEEK));
columns[columnIndex] = dow + " " + calendar.get(Calendar.DATE);
return columns[columnIndex];
}}
163:デフォルトの名無しさん
09/11/30 11:24:00
すみません、激しく自己解決しました
calendar.add(Calendar.DAY_OF_WEEK, columnIndex);
ですね
164:159
09/11/30 12:03:26
>>160
ありがとうございました。
助かりました。
165:デフォルトの名無しさん
09/11/30 12:15:26
HashMapで現在
キー 値
あいうえお →1
かきくけこ →2,3
さしすせそ →4
とセットされているとして値の個数を返すメソッドってありますか?
たとえば「かきくけこ」を引数とした場合に2が返ってきてほしいのですが。
166:デフォルトの名無しさん
09/11/30 12:25:43
値の型って何さ
167:デフォルトの名無しさん
09/11/30 12:30:17
>>165
HashMapに同じキーの新しい値を入れると古い値は消えるので、値が2個以上になることはありません
168:166
09/11/30 12:38:38
ArrayListでも突っ込んでるのかと思った
169:デフォルトの名無しさん
09/11/30 19:27:58
HashMapのかわりに何を使えばいいのですか?
>>166以外の人に答えてほしいです。
170:デフォルトの名無しさん
09/11/30 19:56:49
HashMapには値としてArrayListを入れて、そのArrayListの中に本当の値を入れるのが定番
171:デフォルトの名無しさん
09/11/30 22:06:45
>>166 も間違ったことは言ってないのに…
172:デフォルトの名無しさん
09/11/30 23:28:00
@see、@param、@override、@throwsみたいなアノーテーションをよく使うけど、
結局アノーテーションって何に使うの?
173:デフォルトの名無しさん
09/11/30 23:32:34
その @see、@param、@override、@throws を、何のために入れているのか、
分からないで使ってるのかw
174:デフォルトの名無しさん
09/12/01 00:11:19
>>172
JavadocのタグとJava5のアノテーションを混同してないかい?
そこに挙げているのはぜんぶJavadocのタグ。
175:デフォルトの名無しさん
09/12/01 00:59:17
アノテーションの言葉どおりに、注釈つけたい場合に利用されてる。
DIコンテナとかEJB界隈を扱うと嫌でも利用例に触れることになる。
このメソッドの前後で新規トランザクション作れよ、とか
このフィールドはDI対象なんだぜ。とかね。
フレームワーク側がそういった注釈を処理してなんらかの処理を追加してくれたりする。
逆に小さなツールとかゲーム作ってるだけならあんまり出てこないと思う。
176:デフォルトの名無しさん
09/12/01 02:53:22
しかし全部javadoc
177:デフォルトの名無しさん
09/12/01 03:47:15
最近まったくjavadoc見てないな。
自動で更新されてるけどまったく見ない。
どうせコード確認しないとあかんし。
178:デフォルトの名無しさん
09/12/01 12:29:27
>>171
勘違いが明らかなときは、それを一言で表現できないなら、レスしない方がいいね。
新人教育のときのような応答をするとバカを見ることになりそうだ。
179:デフォルトの名無しさん
09/12/01 12:33:18
でもふつう>>168のように考えると思うんだが
180:デフォルトの名無しさん
09/12/01 12:44:45
いやバカは無知をさらけ出さない質問者
小出しするやつはしぬ
181:デフォルトの名無しさん
09/12/01 12:54:56
ええよええよ
目下に馬鹿にされるのは慣れてるから
182:デフォルトの名無しさん
09/12/01 15:04:11
BufferedReaderで開いたファイル(bin)に
akljflkgjadb
jdnfkgjnd;fkj
fjng;alkjndf;gk
と書かれている場合に、bin.read()で一文字ずつ配列にいれていきたいのですが、改行がきたらループを抜けたい場合
while(□ !=bin.read())
の□には何を書けばいいですか?\nでいいんですかね?
183:デフォルトの名無しさん
09/12/01 16:36:34
EOFて定数なかったっけ?
184:デフォルトの名無しさん
09/12/01 16:51:48
1 3 8 9
5 2 4
1 4
8 12 3 10
7 9 8
5 3 11 3 9 4 2
4 5 2
↑のような内容のテキストファイルがあります。
各行にはいくつかの数字が羅列されてるんですが
その個数は各行ごとに完全にランダムで
かつ最大何個とかも決まっていません。
このようなファイルを読み込んで
int[][]、もしくはint[][]でできないとしたら別の何らかの形で持ちたいのですが
どうするのがよいでしょうか?
185:デフォルトの名無しさん
09/12/01 18:19:51
>>182
ためしてないけど、たぶんファイルに記録されている改行コードがその
まま返るんじゃないかなあ。Windows で作ったテキストファイルだと
\r と \n の2文字。
せっかくBufferedReaderなんだから、readLine() で一気に1行読んでか
ら処理するのがお勧め。こっちなら改行コードが何か考える必要がない。
186:デフォルトの名無しさん
09/12/01 20:10:07
>>184
別にint[][]でいいんじゃねーの。
そのデータをどう使いたいのかわからんから何とも言えないが。
187:デフォルトの名無しさん
09/12/01 20:24:53
ファイルの内容をint[][]型の変数にどうやって格納するか
ってのを聞きたいんじゃないの?
188:デフォルトの名無しさん
09/12/01 20:26:11
>>187
そうです、まさにそれが知りたいです
えすぱー!
189:デフォルトの名無しさん
09/12/01 20:32:54
>>185にほとんど答えが書いてあるけど…
ストリームオブジェクトを作ってreadLineで読み出すしかない。
readLineで読み込んだ1行はさらに区切り(ここでは空白?)を元に文字列を分解して数字を取り出す。
汚いコードになるだろうけど、ベタにテキストファイルに数字が羅列されてるなら仕方ない。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4924日前に更新/238 KB
担当:undef