【初心者歓迎】Java質問・相談スレッド65 Update 2
2ゲト
3 :
デフォルトの名無しさん :2005/06/09(木) 00:20:19
賛成。つーか重複
本物のスレが埋まったときにここが残ってたら ここ次スレにしちまえば?
まぎらわしい。削除に賛成。
削除になった例が無い
何でまた新しいのがたってるわけ? 67が進行中で66も未消化で残ってるのに。 まあ、削除はされないだろうから、現行スレの消化待ちだね。
>7,9 どうせ全部見てるんだろ?
11 :
9 :2005/06/10(金) 10:11:00
12 :
デフォルトの名無しさん :2005/06/11(土) 22:59:34
13 :
デフォルトの名無しさん :2005/06/12(日) 10:06:14
このスレを消し去りたいために必死になりすぎ。 削除人も忙しいんだから、放置。
結局みんな両方見てるんだし、 サーバとクライアントに別けたらどうだろ?
いや、8割以上は無視しているよ
重複では削除依頼ははねられるのがおちなので、放置するしかないよ。 むしろ複数たっていると適度に話題が拡散するので個々のスレが見やすくていい。
19 :
デフォルトの名無しさん :2005/06/13(月) 16:08:10
import javax.swing.JOptionPane; public class FractionDriver { public static void main(String[] args) { Fraction f1 = Fraction.readFraction("Enter first fraction"); Fraction f2 = Fraction.readFraction("Enter second fraction"); if (f1.greaterThan(f2)){ System.out.println(f1.toString() + " is greather than " + f2.toString()); } if (f1.lessThan(f2)){ System.out.println(f1.toString() + " is less than " + f2.toString()); } } } これにシンボルを解決できませんとのエラーが出ました。何回見ても思い当たる 所が見つかりません。どなたかヒントください。。
20 :
デフォルトの名無しさん :2005/06/13(月) 17:01:55
以下のような感じでsURLの示すアドレスのhtmlを表示させたいので すが、jdk1.3.1だと問題なくてjdk1.4.2だと日本語の部分だけ化け ます。これは1.3.1と1.4.2の仕様違いなんでしょうか? ---- URL s = new URL(sURL); InputStreamReader is = new InputStreamReader(s.openStream(), "Windows-31J"); BufferedReader in = new BufferedReader(is); String line; while ((line = in.readLine()) != null) { System.out.println(":::" + line); ----
Windows で動かすなら下手に指定しないほうが良い。 InputStreamReader is = new InputStreamReader(s.openStream()); あるいは Windows-31J の代わりに MS932 とか Cp932 とか。
>>19 Fraction ってのはどこのどいつだ?
よくわからんのやけど Windows用のプログラムってGUI必須なの? プログラムにメッセージをエラー以外実装しなかったら、 「何これ?ウインドウ何もでないの?」と言われた。 実行結果のファイルができあがっているのにだ。
そりゃ必須じゃないけど > メッセージをエラー以外実装しなかったら 任務完了メッセージくらい実装してやれよ。
Windowsで何もメッセージが出ないっていうのは フリーズや暴走等を連想させて不安になる ダイアログで正常終了メッセージ出すか CUIベースなら「正常終了。Enter押してね」ぐらいしないと Winしか知らない人間はかなり不安感を覚えるよ
JavaアプリからJNI経由で、C++で作成済みのDLLを利用したいのですが、 自分なりに調べてみたところ、Javaアプリ→中間DLL→DLLという風に すればできるのかなと思っています。 この中間DLL(?javahで作ったヘッダをインクルードして作るDLL)を 挟まずに直接ターゲットのDLLを利用することは可能でしょうか。 よろしくお願いします。
>>29 やっぱりそうですよね。ちなみに中間DLLを挟めばJavaアプリからなら
いけると思うのですが、アプレットの場合はどうでしょうか。
署名付きにすれば可能なんでしょうか。
>>30 アプレットでもアプリの場合と同じでJNIは使えるよ。
ただ配布するDLLを実行時にどこにおいてロードするのが
スマートかはしらない。
昔SWTで動くアプレットを作ったときは遊びだったから実行前に
java.library.pathがとおってる場所に自分でおいちゃったけど。
>>31 ああそうか。そんな問題があるんですね。
なんとかユーザが意識せずにDLLを置く方法があればいいのですが、
一般的にはどのようにするものなのでしょうか。
JNIを使うということは環境が分かっているということ ならなんとでもなるさ
そんなでもないな。
CSVからデータ読んでXMLを作るプログラムを組んでみた。 str = file.readLine(); StringTokenizer str2 = new StringTokenizer(str); print("<root>"); print("<child>"); while(str2.hasmoreTokens()){ print("<table>"); print(str2.nextToken()); print("</table>"); } print("</child>"); print("</root>"); みたいにベタで書くのは反則かな?
別に反則ではない
反則でないにしろ そんなコードを大量に送りつけられ引き継ぎ を頼まれたら断りたい。 Jakarta Velocityでテンプレートを作ったほうが読みやすい。
Velocityつかうかどうかも考慮せねばね 実行頻度の低いやっつけ仕事ならそのままでもいいだろうし ただ、タグ文字とかはいってくるとおかしくなるからちゃんとエスケープしなされ それがいやならJAXPで Velocity使うよりはCSVからのコンバート程度なら俺はFormatter使うかも 項目数が少ないとかならエスケープするのマンドクセでJAXPでDOM操作してるかもしれん
Java Web Startって何なの?
JavaはWebの入口ですって合言葉。 Wright Once Run Anywhereに代わるもの。
ベターアプレットってところだな アプレットのほかにアプリケーションも配布できたり バージョンやキャッシュコントロールとかセキュリティ周りとか 強化点は多い でてきたのはかなり前だったが、Swingが実用的になったり リッチクライアントが流行ってきたここ数年はわりと使われてる
なぜ誤爆と判断?
>>40 及び
>>41 javax.xml.*パッケージあたり学んでいけばなんとかなる?
>>46 まあアプレットを使いたい人間にJWSを勧めれば
誤爆と勘違いされても仕方ないだろうな。
JAVA初心者です。 Vector vector = new Vector(); String array[] = new String[11]; vector.addElement(array); for( int i1 = 0; i1 < vector.size(); i1++) { String[] str = (String[])vector.get(i1); for (int i = 0; i < str.length; i++) { System.out.println(str[i]); } } 11の配列にデータ(String)を入力し(ここでは省略)、11すべてをVectorへいれ、String型で取り出したいのですがエラーになります。 System.out.println(vector1.get(i));だと文字化けします。 アドバイスお願いします。そういったことを書いてあるサイト等ご存知でしたらお願いします。
>vector.addElement(array); これっていけるんだっけ? あと、エラーってなんだろう?
エラー内容を英訳すればすべて解決しそうな悪寒
そもそもvector1ってなんだ
>vector.addElement(array); これだと、Vector の最後にarrayオブジェクトを一つ追加するだけなのでNG。 ぐるっと回すか、Arrays.asList(array)でも使う。 Vector vector = new Vector(); String[] array = new String[11]; for (int i = 0; i < array.length; i++) { array[i] = String.valueOf(i); // 適当に初期化 } vector.addAll(Arrays.asList(array)); for (int i1 = 0; i1 < vector.size(); i1++) { System.out.println(vector.get(i1)); }
55 :
49 :2005/06/16(木) 06:42:13
すいませんvector1は間違いです。vectorです。 学校からだと書き込めないので確かめられません・・・すいません。 54さんのやり方試してみます。 結果は今日の夜に。。。 すいません失礼します。
>>54 最初は同じようにレス仕様と思った。
けど、エラーが出る理由が分からなかった。
エラーって何?
>>49
兄弟スレにカキコしたら、混んでいた為すぐに流れて、回答が得られなかった為に このスレに移動してきました。 ClassLoaderの動作で困ってます。 自作したクラスローダーで任意の場所のクラスファイルを読み込んで動作させたいのですが、 その時に読み込まれるクラスが内部クラスを使用していると、その内部クラスが読込めないとエラーになってしまいます。 先輩方に対処及びアドバイスをお願いします、以下にソースを載せます。 //ロードされるクラス public class LoadedClass { public LoadedClass(){ System.out.println("LoadedClass"); innerClass inner = new innerClass();//コメントにすると動作する } public class innerClass{ public innerClass(){ System.out.println("innerClass"); } } }
58 :
57 :2005/06/16(木) 12:50:25
//自作クラスローダー public class CustomClassLoader extends ClassLoader { public static void main(String[] args) { CustomClassLoader cl = new CustomClassLoader(); String fName = "D:\\test\\LoadedClass.class"; String cName = "test.LoadedClass"; Class c1 = cl.findClass(cName,fName); Object te; try { te = c1.newInstance(); } catch (Exception e) { e.printStackTrace(); } } public Class findClass(String className,String fileName) { try { File file = new File(fileName); FileInputStream in = new FileInputStream(file); byte[] buff = new byte[(int)file.length()]; in.read(buff); in.close(); Class c1 = defineClass(className, buff, 0, buff.length); resolveClass(c1); return c1; } catch (IOException ex) { ex.printStackTrace(); } return null; } }
インナークラスは別クラスだぞ
60 :
57 :2005/06/16(木) 13:59:22
>>59 動きを見てると、どうやらそのようですね。
そのインナークラスをClassファイルから読込みたいのですが、
どのようにして読込んで良いか、まったくわからない状態なんですよ。
何か良い案ないですか?
ちなみにインナークラス使わないでやるってのは無しでw
ファイルから読み込む程度なら既存のクラスローダつかったほうが
インナークラス持ちのクラスをコンパイルするとどんなファイルができ るのか考えれば、何をすればいいのかは明白でしょ。
つーかインナークラスのクラスファイルの命名規則
にそってファイルを読み込めばいいだけだよねと
思うが、
>>57-58 見てるとURLClassLoaderで十分な気がするなあ。
65 :
57 :2005/06/16(木) 14:37:51
>>61 出来るの知らなかった・・・
URLClassLoaderでとりあえずは出来るみたいですね。
アドバイスありがとうございます。
>>60 外部クラス名$インナークラス名.class
とか
外部クラス名$1.class
とかでロードしてみたらどうだ?
67 :
57 :2005/06/16(木) 15:11:46
Class.forName("com.foo.OuterClass$InnerClass"); InnerClass は public static 宣言されている必要あり。
69 :
57 :2005/06/16(木) 15:29:17
>>68 staticにしてもjava.lang.NoClassDefFoundErrorでした。
URLClassLoaderの方は、java.lang.ClassNotFoundExceptionです。
自作のクラスローダーだと途中までは行くけどこれだと全然行かない
public class Test {
public static void main(String[] args) {
String fName = "D:\\test\\LoadedClass.class";
String cName = "test.LoadedClass";
File file = new File(fName);
URL[] url;
URLClassLoader loader;
try {
url = new URL[]{file.toURL()};
loader = new URLClassLoader(url);
Class clazz = loader.loadClass(cName);
Object target = clazz.newInstance();
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
URLClassLoader に指定するのはクラスファイルそのものではなくクラスパスだ。 URL url = new URL("file:///c:/");
>>67 なあなんでURLClassLoaderのAPI仕様を読まないかなあ。
確かにぐぐって情報を集めるのは大事だが、まず一次情報源だろ。
72 :
57 :2005/06/16(木) 16:13:56
>>70 ありがとうございます、クラスファイルじゃなくてクラスパスを指定するんですね
>>71 すみません、確かにAPI仕様書をみればクラスパスを指定って書いてありました。
>>アドバイスをくれた方々
お騒がせしました。なんとかいけました。
最終的には
String fName = "D:\\test\\LoadedClass.class";
↓
String fName = "D:\\";
このようになりました
任意の場所からクラスロードが目的でなければ、素直に -cp に D:\ を指定して Class.forName() でやった方が良いと思うが。
74 :
57 :2005/06/16(木) 16:30:54
>>73 プラグイン追加型のシステムなので、ユーザーがプラグインの場所等を指定する為、
起動時にはどこにあるかわからないから、それだとちょっと無理かな
クラスパスルート指定を間違ってただけか FAQだな
プラグインシステムなら既存のフレームワーク 流用したほうが57レベルなら近道だろうなあ。
>>76 プラグイン的なシステムって多岐にわたるので既存のものを使うって難しいぞ
たとえばゲームとかでもつかうし
>>77 一行目と二行目のつながりが全然わからないんだが、
ためしにOscarがゲームに不適な理由とか具体的に
示してくれないか?
79 :
49 :2005/06/16(木) 21:39:01
54さんのやり方で解決しました。 ありがとうございました。
お気楽プラグイン追加型システムの作り方 1. pluginsディレクトリにすべてのプラグインのjarファイルを入れる 2. 起動時に、pluginsディレクトリのすべてのjarファイルをクラスパスに追加するスクリプトを経由して実行 bashならこうか? java -cp .:`ls plugins/*.jar|xargs|sed 'y/ /:/'` some.pack.Application WindowsならVBスクリプトで書くといいね。 クラスローダが同じためプラグイン同士で干渉しあう可能性があるが、それを気にしないのならこれで。
つーか動的にやってなんぼだろ? JDBCドライバはこれを使うとかユーザーに選択させてね 昔のJBuilderみたいに再起動しないとつかえないとかそういうのでいいのならそれでいいが
>>80 VBスクリプトはノートン先生に怒られる可能性があるからここはバッチファイルで
それだけじゃ駄目だろ。それたんにクラスパスに jarを追加してるだけだから。そのほかにプラグイン ディレクトリにどういうプラグインが入っているか アプリケーションが知る仕組みが必要。クラスパス に含まれているクラスを全部走査するのは非現実的 というか無理だからね。 で、そういう仕組みをいれるんなら、結局URLClassLoader で動的にプラグインのクラスをロードするようにしても 手間としてはほとんど変わらなくなる。
こういうプラグインシステムみたいな車輪の再発明を防ぐために Eclipse RCPがあるんだと思うんだが、普及しないよなあ。なまじっか、 統合開発環境とかSWT/JFaceとかの知名度が中途半端にあがったんで妙な 偏見もたれてるんだろうな。 import org.eclipse.core.runtime.IPlatformRunnable; public class Application implements IPlatformRunnable { public Object run(Object args) throws Exception { System.out.println("Hello World!"); return IPlatformRunnable.EXIT_OK; } } みたいなSWT/JFaceを使わない単なるHelloWorldでも 立派なEclipseアプリケーションとしてプラグインシステムを利用できるんだけど。
>>84 Eclipse使ってない俺には何がなんだかわかりません。
URLClassLoader使って書いてもたいしたコード量じゃないしな それをライブラリにまとめていればいいだけだし EclipseRCPは実績とかがなぁ JFace追うにしても正式版では実用にならないし RCPだめぽ
あれ?Javaってメッセージボックスってないんですか?
JOptionPane#showMessageなんとかかんとか
VBでもCでもMessageBoxという名前のAPIが使えたので、 あらゆる言語でこの機能はMessageBoxという名前になっ ている、と思いこんでいるトンマが87。
>>89 あーそれそれ。2年ぶりだったから忘れてたわ。
>>90 よ!トンマ君!
>>87 =91のほうがトンマにみえるが
質問してきてこれじゃぁな
レジェンドオブヒーロー
>>86 > JFace追うにしても正式版では実用にならないし
どういう意味?
JNIでGetFieldID呼ぶときの第4引数って何を指定すればよいのでしょうか。 intの場合に"I"というのはサンプルにあったのですが、 それ以外の場合はどうすればよいのでしょうか。
97 :
96 :2005/06/18(土) 20:38:57
すいません。ヘッダファイル見てたら分かりました。
98 :
デフォルトの名無しさん :2005/06/19(日) 10:15:48
マイクロソフトJAVAって無くなったの?
100 :
デフォルトの名無しさん :2005/06/19(日) 12:58:52
今までC++でプログラムつくってて 構造体まではある程度わかりましたが、ポインタの理解に苦しみました。 今後、Javaでプログラムを作っていきたいのですが 入門書で何かお勧めはありますでしょうか? JDK5.0、eclipseをつかってプログラムを組んでいく予定です。
>>47 学ぶ?
なぜそんなものを「学ぶ」と大袈裟な表現をつかうほど
のものにしたがるのか不思議でしょうがない。
Velocityは検索すれば使い方がすぐにわかる。
javax.xmlというパッケージ単位で何かするよりも
API単位で基本的な使い方を覚えたほうがいい。
java.xml.*のすべてが必要なわけじゃないんだし。
>>84 > こういうプラグインシステムみたいな車輪の再発明を防ぐために
> Eclipse RCPがあるんだと思うんだが、普及しないよなあ。なまじっか、
漏れはそのシステムが
SWTに依存せずAWT, Swingなどでも使えることを望む。
さらには、WARなどもプラグインで拡張できるようなシステムができれば Tomcatを利用したJava開発が多いこの業界では普及するのではないかと。
105 :
デフォルトの名無しさん :2005/06/19(日) 13:25:54
このスレは実質相談スレPart70だな そしてPart68が実質相談スレPart71だ。 つまりこういうことだ。 # 【初心者】Java質問・相談スレッド65【大歓迎】 # 【初心者歓迎】Java質問・相談スレッド65 Update 1(実質66?) # 【初心者】Java質問・相談スレッド66【大歓迎】(実質67?) # 【初心者】Java質問・相談スレッド66【大歓迎】(実質68?)(レス数6で落ち) # 【初心者】Java質問・相談スレッド67【大歓迎】(実質69?) 以下のように情報が付加されるわけだ。 # 【初心者歓迎】Java質問・相談スレッド65 Update 1(実質70?) # 【初心者】Java質問・相談スレッド68【大歓迎】(実質71?) 皆の衆よ! 良いな!
マイクロソフトJAVAって無くなったの?
なぜそれが欲しいんだ?
知りたいだけなんですが、 JAVA で Sun と MS が争ってるとか昔聞いていたんだけど 数年ぶりにPC弄るようになって、今 MSjava どうなってるのかなって、 マイクロソフトJAVAって無くなったの?
>>102 EclipseのプラグインシステムはSWTに依存しないってことが
>>84 の後半に
書いてあるわけだが。大体SWTがないJ2ME上でも動くし。
>>103 すでにそういうシステムになっているわけだが。
マシンとJVMの性能を比較したいので
ベンチマークソフトを探しています
以前、同様の質問をして
SPECjbb2005 をご紹介いただきましたが
できれば無償で利用できるものがあると嬉しいです
ググッてみて Java Grande というのを見つけましたが
どうやら最後に更新されてから時間が経っているようでした
http://www.epcc.ed.ac.uk/javagrande/ 無償利用できる Java ベンチマークソフトで
お勧めのものがありましたらご教示ください
>>110 その前になにを計りたいか示すべきだと思うが?
例えばクライアントのGUI性能を測るのにSPECjbb2005を使っても無意味だろ?
>>111 数値計算や文字列処理といった基本的な部分の速度や
マルチスレッド関連の処理性能あたりが特に知りたいです
GUIまわりの性能も計測できれば嬉しいですが
これについては現在のところ特に必要というわけではないです
自分のほしい機能のチェック目的なら自作すれば?
自作しても良いんですけど 公開されているものを利用する方が 他の環境との比較もできて嬉しいなと思いまして ケチケチせずに SPEC の JVM98 あたりを買うのが良いんでしょうかね
数値計算ならLinpack, Dhrystone, WhetStoneあたり。 マルチスレッドあたりのスケーラビリティをみるならjbb2005だろうなあ。
>>115 情報ありがとうございます
それぞれ調べてみます
マイクロソフトJAVAって無くなったの?
マイクロソフトJAVAって無くなったの?
>>109 >
>>102 > EclipseのプラグインシステムはSWTに依存しないってことが
>>84 の後半に
> 書いてあるわけだが。大体SWTがないJ2ME上でも動くし。
そうなのか。情報thx
>
>>103 > すでにそういうシステムになっているわけだが。
ホットデプロイのことをいっているのか。
あれがEclipseのプラグインのようなシステム
として動いているようには見えないのだが
素人目から見たただの気のせいですかいな?
TomcatのホットデプロイはWARを拡張したWARを作ることが容易だとは思えないのだが どう思うよ? Eclipseのプラグインを拡張したプラグインというふうにプラグインを数珠繋ぎに してゆくことは容易ではないような気がするのだが。
>>120 >ホットデプロイのことをいっているのか。
>あれがEclipseのプラグインのようなシステム
>として動いているようには見えないのだが
いや、Eclipseにwarをプラグインとして
登録できるって話。
123 :
デフォルトの名無しさん :2005/06/19(日) 16:44:19
マイクロソフトJAVAって無くなったの?
はいはい、無くなったに等しいですよ。
前スレ943です やっぱり上手くファイル存在チェックが出来ません
>>126 うまくいかないコードくらい載せてみれば?
129 :
デフォルトの名無しさん :2005/06/19(日) 17:49:33
マイクロソフトJAVAって無くなったの?
初歩的な質問かもしれませんが教えてください intやshortなどのプリミティブ型を byte配列に相互変換する方法はありませんか? int → byte[] → int みたいな感じです
>>130 自分でシフトして代入していくしかないんじゃないの?
>943ですが、 >SV2で、\\SV1\Cは見れます >どうも、SV2内のファイルにしかチェックが出来ないみたいなのです Sv2から \\Sv1\C が見えてないに更に1万ペリカ String dir = "\\\\SV1\\C"; boolean exists = new File(dir).exists(); これでexistsがfalseなら、そのコードを実行している環境から \\Sv1\Cが見えてない。
それが、実行環境からSV1が見える状態にしてもチェック出来ないのです
マイクロソフトJAVAって無くなったの?
>>134 コードと詳細な環境を晒さないと
もうあなた以外のだれにも解決できないと思うよ
うーん、携帯からなんで難しいです… 一応前スレには書いたのですが、無くなっちゃってますかね?
プログラム初心者ではじめてJAVAを学んで3ヶ月になりますが、 なかなか分かるようになりません・・・。 皆さんは何ヶ月で感覚をつかみましたか? 現在結城さんの本の下巻を読みつつ会社で研修を受けています。 アドバイスお願いします。 スレ違いかもしれませんが・・・
140 :
デフォルトの名無しさん :2005/06/19(日) 22:09:06
>>140 半角スペースのつもりが全角スペースになってる。
143 :
140 :2005/06/19(日) 22:28:02
>>138 君んところはどうかしらんが、おれんとこでは、ネットワーク越しの共有フォルダを
Eドライブに割りあてたうえで、下記チェックプログラムを実行したら、普通にtrueが返ってきたぞ。
ちなみに対象ファイルは「a.txt」で、「java FileChecker "E:\a.txt"」と実行した。
import java.io.*;
public class FileChecker {
public static void main( String[] args) {
String fileName = args[0];
FileChecker fc = new FileChecker();
fc.checkExist( fileName);
}
boolean checkExist( String filePath) {
boolean result = false;
try {
File theFile = new File( filePath);
if( theFile.exists()) {
System.out.println( "ファイルは存在します");
result = true;
} else {
System.out.println( "ファイルは存在しません");
result = false;
}
} catch(Exception e) {
e.printStackTrace(); System.exit(1);
}
return result;
}
}
てことは、プログラムが稼働しているSv2から、ファイルが存在しているSv1が見えていて、しかもSv2上で
Sv1をネットワークボリューム割当してれば、普通に「E:\hoge.txt」って感じでチェック出来るはずだ。
>>134 釣りじゃないのなら「チェックできない」なんて曖昧な説明でなく
どんなコードを実行して、どういう結果になって
それを元にどう判断したのか順を追って説明しろ。
まぁ、釣りだろうな・・・
毎度毎度引っかかってる俺がいるわけだが_| ̄|○
PaintedWall.java:25: PaintedWall() は PaintedWall で定義されています。 public PaintedWall() { ^ PaintedWall.java:16: シンボルを解決できません。 シンボル: メソッド setSize (int,int) 場所 : PaintedWall の クラス setSize(400,300); //画面サイズの初期値 ^ PaintedWall.java:18: シンボルを解決できません。 シンボル: メソッド addWindowListener (<anonymous java.awt.event.WindowAdapter>) 場所 : PaintedWall の クラス addWindowListener(new WindowAdapter(){ ^ PaintedWall.java:61: 互換性のない型 検出値 : PaintedWall 期待値 : java.awt.Frame Frame w = new PaintedWall(); //コンストラクタの起動 ^ エラー 4 個 こんなエラーがでるんですが、何が原因かわかりませんか?
147 :
デフォルトの名無しさん :2005/06/20(月) 01:12:09
ん
PaintedWallがFrameのサブクラスでも無いのに、Frame型変数に突っ込もうと したり、FrameクラスのメソッドであるsetSize()とかaddWindowListner()とか呼んでる からでしょ。 というか一番最後のエラーにちゃんとそう書いてある....
>>145 //ファイル存在チェック
File objFile = new File(strFileAddress);
if (objFile.exists() == true && objFile.isDirectory() == false){
} else {
Err_Msg = "指定したファイルが存在しません。";
return false;
}
コードはこんな感じです。
strFileAddressには文字列で画面から取得してきたアドレスが入ります。
sv1:ファイルサーバ
sv2:APサーバ
pc1:クライアント
sv1のC:\直下にbook1があるときに、
sv2のB:\にsv1のC:\を割り当て、B:\book1.xlsと画面で入力する。・・・ファイルが存在しません。
\\sv1\C\book1.xlsと入力・・・ファイルが存在しません。
sv2にてエクスプローラのアドレスバーに上記入力した場合には、ファイルが見れます。
上記で、sv2上のファイルは存在があれば抜けているのですが、
sv1のファイルをチェックしようとすると、全てexistsがfalseになるようなのです・・・
>>149 俺ならあちこちにSystem.out.println()を挿入して、
変数内容を表示させてみる。
あと、Fileを使うときは、File#list()を取得してみる。
初めからbooleanばかりじゃわかりにくいからね。
>>150 やってみました
//ファイル存在チェック
strFileAddress = "\\sv1\C\book1.xls"
File objFile = new File(strFileAddress);
System.out.println(objFile);
System.out.println(FileAddress);
System.out.println(objFile.length());
System.out.println(objFile.lastModified());
System.out.println(objFile.list());
if (objFile.exists() == true && objFile.isDirectory() == false){
} else {
Err_Msg = "指定したファイルが存在しません。";
return false;
}
結果
\\sv1\C\book1.xls
\\sv1\C\book1.xls
0
0
null
でした・・・
>>149 System.getProperty("user.name")の値は想定している
ユーザ名になっているかとかアクセス権がらみはOK?
153 :
デフォルトの名無しさん :2005/06/20(月) 11:43:22
2次方程式の虚数解を求めるプログラムで、 iをどうやって定義すればいいんですか?
>>152 System.getProperty("user.name")
がSYSTEM
となっているのですが、これって・・・?どういう意味でしょう??
>>154 それって、administratorでログインしてるのかな?
>>153 グローバル変数で、ルート(ー1)とする
>>156 すみません・・・マジでそこすら分からない・・・
どうやったら確認できますか?
質問です。 小数点のある計算が意図した結果にならず、悩んでおります。 うまく処理する方法をおしえてください。 double yy = 18.33; double hh = 100; System.out.println(yy*hh); ---------------------- 1832.9999999999998 (結果) 1833.0(←この結果を期待しています)
>>158 ログアウト?(だっけ?Windowsの場合)して、表示されている名前を見ろ
(下にパスワード欄があったはず)
それがadministratorだったら、非常にまずい。
162 :
159 :2005/06/20(月) 13:47:05
>>160 pc1については、私のPCなのでUserNameはMyNameでした。
sv2については、administratorではありませんでしたが、
sv1については、administratorのようです。
えっと・・・マズイんですか・・・??(汗
164 :
159 :2005/06/20(月) 14:03:55
自己レスです。 double yy = 18.33; double hh = 100; System.out.println(yy*hh); NumberFormat formatter = NumberFormat.getNumberInstance(); formatter.setMaximumFractionDigits(2); formatter.setMinimumFractionDigits(2); System.out.println(formatter.format(yy*hh)); このあたりで解決していきたいとおもいます。ありがとうございました。
>>154 SYSTEMはWindowsでサービスを動かすときのデフォルト
アカウント。当然ファイルサーバ側の共有リソースの
設定で権限が与えられていなければアクセスすることは
できない。
というわけで次はファイルサーバ側の共有フォルダの
アクセス権とファイルシステム上でのアクセス権の
チェックをすること。
つーか、もうJavaの話じゃないから、もし自分の理解の
範疇を超えていたらPC初心者板に移動してください。
>>165 ファイルサーバ側の共有フォルダの
アクセス権とファイルシステム上でのアクセス権の
チェック
これはPC初心者板で聞いたほうが良いってことですかね・・・
JavaというよりはWindowsネットワークの基本的なお話ですな ユーザーがいないとか権限がないとかだと思うけど
>>167 なるほど・・・ちょっとPC初心者板に行って来ます。
もし、それでも分からなかったら再度お聞きして宜しいですか?
だめです
>>151 エスケープ処理されてないようにみえるんだが
>>164 そんな見かけの表示で誤魔化すんじゃなくBigDecimal使え。
浮動小数点扱うのに誤差をなくしたいっておもしろいな 速度と範囲をとるために正確さを犠牲にしている方法なのにな つーかつい最近もまったく同じような質問みたような気がする
173 :
前スレ943 :2005/06/20(月) 19:06:11
174 :
デフォルトの名無しさん :2005/06/20(月) 20:07:09
GUIでcanvasに目一杯描画したいんですが,可能ですか?
きっと可能です。
176 :
デフォルトの名無しさん :2005/06/20(月) 20:13:54
どうやるんですか?
>>176 public void paint (Graphics g) {
目一杯描きます。
}
>>172 紙テープでFORTRAN やってた時代から FAQ ですな。
>173 ヒント: System.out.println("\\");
Javaからネイティブコードを呼ぶ手段として、JNI以外にも Java/COMやJ/Direct等があるようなのですが、それぞれの ざっくりとしたメリットとデメリットを教えて頂けないでしょうか。 とりあえずデメリットとしては、J/DirectはJ++じゃないとダメ、 Java/COMはUNIX系に移植するとき苦労する、とかでしょうか。
>>173 mainなんかで外からファイル文字列を受け取る場合は例外として、プログラム内部で
文字列でファイルパスを書く時は、\はjavaではエスケープ指定であって\という文字では
ない。だから\という文字を指定する時は\\とかく。
\\Srv1\C\
は
\\\\Srv1\\C\\
と書かなければいけない。
>>180 JNI以外は無視していい。
Windows限定のプログラムを作るなら、別にJavaを使う必要ないんだし。
>>183 MS独自拡張だしな
MSVMメンテされないし
COMに至ってはMS自体が黒歴史に封じたシロモノだし。
「なかったことにしよう〜〜」
>>181 java.io.File.separatorとかjava.io.File.pathSeparatorとか使っていこうよ
188 :
前スレ943 :2005/06/21(火) 08:51:21
>>181 それって、ユーザが画面入力する時にも意識させておかないとまずいんですか?
ユーザも\\\\sv1\\Cと入力しないといけない??
>>188 セパレータには\ではなく/を使え
若しくはFile.separatorを使え
>>190 ユーザーに画面入力させる時とかどうしてます?
194 :
デフォルトの名無しさん :2005/06/21(火) 11:20:02
>>191 while(falseになるまで次の文字に移りながらn文字回、ループを回す){
//なんかじっこーする
if(ユーザが入力したキー.equals('\\')){
//なんたら
}
//うんたらかんたら
}
エスケープシーケンスはコンパイラに教えるもの。 Stringの中に入ってる文字は関係ない。
196 :
デフォルトの名無しさん :2005/06/21(火) 12:57:21
String bin = "01000001"; // 0x41 int wk = 0; byte[] b = new byte[1]; for(int i = 0; i < 8; i++){ wk += (Integer.parseInt(bin.substring(i, i + 1)) * (1 << (7 - i))); } b[0] = (byte)wk; String str = new String(b); // str = "A" System.out.println(str); 二進ダンプしたものを元に戻す処理として上記のようなものを書いたのですが もうちょっとさくっとできないものでしょうか?
wk = Integer.parseInt(bin, 2); じゃダメなんかい?
198 :
196 :2005/06/21(火) 13:20:18
>>197 そんな便利なメソッドがあるんですね。それでいけました。ありがとうございます。
GUIで class a{ int a[][] = new int[2][2]; ・・・・・2*2の同じ画像が出るようにしてあります } class b{ ここで例えば[0][0]の画像が押されたら [1][1]の画像が変るというような処理を行いたいのですが クリックされたのはどこの画像なのかを識別するには どうすればいいのでしょうか?
やさしいMaja
>>199 int配列との関係が不明。
適当なリスナを用意する。
202 :
デフォルトの名無しさん :2005/06/21(火) 15:53:42
普通に配布されているアプリケーションパッケージ(*.jar)と同じく、JARでパッケージ化したのですが、 デスクトップ上でダブルクリックしたとき、配布されているもの(V2C)は実行されるのに、自分のものは ウインドウを開くだけなのに、エラーで実行されません。 コンソールでは、実行されます。 なにが、間違っているのでしょうか? ソース import javax.swing.*; import java.awt.*; public class main { public static void main(String args[]) { JFrame frm = new JFrame("Kitty on your lap"); frm.setBounds(0 , 0 , 400 , 200); frm.setVisible(true); frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
204 :
デフォルトの名無しさん :2005/06/21(火) 16:08:27
>>202 >>203 を参照して、Manifestに「Main-Class:」行を付けてください。
205 :
202 :2005/06/21(火) 16:33:54
>>205 「Main-Class: manifest jar」でぐぐれ。
207 :
デフォルトの名無しさん :2005/06/21(火) 16:48:30
あ”あ”〜プログラマに向いてないかもしれん。かといって、他はなし。天国かな地獄かな。
この道より他にわれを生かす道なしこの道を行く 〜武者小路実篤
いい加減標準ライブラリで GIF はエンコードできるようになったわけ?
>>192 >>193 >>194 >>195 なるほど・・・勉強になりました。
前スレより続いていた問題は解決しました。
私がTomcatのユーザをちゃんと確認していなかっただけでした。
申し訳ありませんでした。
数々のご対応頂きありがとうございました。
% java -version ~:8549 java version "1.5.0_02" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_02-b09) Java HotSpot(TM) Client VM (build 1.5.0_02-b09, mixed mode, sharing) % cat AvailableImageWriters.java ~:8551 import javax.imageio.ImageIO; import java.util.Arrays; public class AvailableImageWriters { public static void main(String[] args) { System.out.println(Arrays.asList(ImageIO.getWriterFormatNames())); } } % java AvailableImageWriters ~:8552 [BMP, jpeg, bmp, wbmp, JPG, png, jpg, PNG, WBMP, JPEG] だそうだ。 個人的にはGIFで保存なんてアリエナイので困らんけど、210は困るんだろうな。
1.6からは書けるようになるらしいけど、GIFはもう使わないでいいなあ。
アプレットを使いたいのですが 主なるクラスが他のクラスを継承している状態でアプレットを継承できません。 インターフェイスでアプレットを実装する事はできませんか?
256色の画像でGIFとPNGはどっちが小さくなるんかいな?
そうなんですか・・・・・・・ じゃあアプレットを使う時は スパゲティで書くしかないのですね・・・
>>217 きっちり設計すれば、必要なくなる。
ガンバレ
多重継承の問題はたいてい inner クラスで解決できる。
>>217 継承しないとスパゲッティになる理屈が分からん。逆だろ。
だいたい OO 初心者は不要な継承が多すぎだ。
>>215 PNGの方が小さい。それよりJPEG2000は普及しないのかね。
>>217 あえて多重継承を禁止してるのはスパゲッティ継承を防ぐためなんだが。
スパゲッティ? 曖昧さを防ぐためだろ。
菱形継承を知らんのか・・・
なんか負けず嫌いがいます
225 :
217 :2005/06/21(火) 21:48:00
多重継承できないと クラス毎に処理が書けなくて 逆に一つのクラスに長く書き綴る事になるんじゃないですか? ちなみにJava暦3ヶ月の初心者ですのでほとんどわかりませんが・・・
>>225 クラスを役割分担させればいいんじゃないの?
1つのクラスですべてやろうとしてるんかい それに継承だけだと階層が深いとやってられんよ
おまいら委譲って言葉を知ってるか?
漠然とほのめかして去ってくのって本人的にかっこいいの? つか、最近はやってんの?
>>222 それもある。
というかスパゲティ継承をすると曖昧さも問題になる。
そんなわけで議論を過熱させこのスレは早めに葬りましょう。
Java質問スレが2つもあると面倒。
>>225 いや、世の中には多重継承できない言語の方が多いんだから、困ってないんだよ。
継承は現実には、本当に必要な時以外使わないように言われてる。
かわりに、役割に応じてクラスを分割して、AppletならメインとなるAppletサブクラスの
インスタンス変数に、その分割したクラスのインスタンスを保持しとく。
アプレット内部では、必要に応じて保持しているインスタンスのメソッドを呼べばいい。
なんかこのスレ見てるとライブドアの新規参入を思い出すな。 土足で既存のスレに割り込んできて、「仲良くしようぜ」って。
君の脳内シナプス作用をこんなところで語られても…
アプレットのクラスを含んだJARファイルを作成する際に、 プロパティファイルを同梱して、アプレットからプロパティファイルを 読み込む、というようなことをしたいのですが、プロパティファイルは JARの中のどこに入れればよいでしょうか。 もしくはこんなことはできないですか?
>>234 クラスパスの通ってるところ(要するにjarの、.classファイルがあるところだが)なら
どこでも。
プログラム内からプロパティファイルを読み込む時は、getResource()で取得する。
クラスパス内から指定リソースを探してくれる。
Javaで以下のようなライブラリを作ろうと考えています。 矩形領域の情報と、直線の情報が与えられる。 矩形領域は、矩形の始点座標(x, y)と横幅の長さと縦幅の長さとで表す。 直線は、両端点の座標で表されす。 直線が矩形領域内に収まっている場合には、直線の両端点の座標を返す。 直線が矩形領域内に収まっていない場合には、矩形と直線の交点を返す。 いわゆる、クリッピングを行うものを作ろうと考えています。 これを実現するアルゴリズムは、すぐに考えることは出来ました。 しかし、スマートなコードでライブラリを書こうと思うと、どのような方針で 書いていけば良いのか分かりません。 Javaでライブラリを作るとなると、それはインタフェースにすべきなのか?継承させる べきなのか?メインプログラムからライブラリに複数の情報を渡すにはどうすれば よいのか?など疑問なところだらけです。 計算アルゴリズムは自分で出来ますので、「矩形情報と直線情報を渡すだけのメインプログラム」 と「情報を渡されて、計算結果を返すライブラリ」の基本構造を御提示願えないでしょうか? お願いします。
インターフェースにする → 意味なし 継承させる → 意味なし Rectangle クラスに Line clip(Line) メソッドでも作れ。
>>237 ライブラリを作る→意味なし
どう考えてもメソッドひとつ分の機能しかないだろそれ。クラスにすらならん。
Rectangle継承するのも勿体ないからLine clip(Line,Rectangle)メソッドでいいよ。
240 :
デフォルトの名無しさん :2005/06/22(水) 12:49:19
>>207 Apache Antの<manifest>タグを使えば
もっと楽にJARを作れるぞ。
>>240 レベル的にant理解するほうが厳しいと思われ
IDE使えばなんにも意識しないけどな
質問です。 static なクラスを作るのと、singleton のクラスを作るのとで、どのような 違いがあるのでしょう? singleton の場合、インスタンスが2つ以上(有限)の場合なら、static なク ラスとの違いが分かるのですが、一つしかインスタンスがない場合、static なクラスで良いのではないかと思ってしまいます。 わざわざ singleton にすることのメリットが分からないのです。お教えいた だけないでしょうか?
245 :
243 :2005/06/22(水) 13:36:49
では、 ・継承を使わないなら、static でよい。 ・元のクラスもstatic だったら、新しいクラスも satatic でよい。 (ただし、プロパティは(オーバーライドしない限り)共有される) という理解でよろしいでしょうか?
>>245 「元のクラス」「新しいクラス」ってなんだ?
それから、staticなものは継承してもプロパティはオーバーライドされないぞ。
「継承を使わないなら」は、将来使う可能性も無いことがはっきりしているならという意味ではその通り。
将来、継承したサブクラスを作成する可能性があるならstaticで作成しない方がいい。
247 :
243 :2005/06/22(水) 14:10:42
ありがとうございます。言葉が稚拙ですみません。元のクラス = 親、新しい クラス = 子 というつもりでした。 継承に付いては、勘違いをしていました。子クラスにフィールドを新設しても、 それにアクセスするメソッドも含めてオーバーライドしないと、新設したフィー ルドにはアクセスされないのでしたか。 実は、Factoryクラスを作ろうとしています。Factoryクラス自体が情報を保持 していて、生成するインスタンスにそれを初期化パラメータとして与えるので すが、今のところ、継承の予定もありませんし、static クラスでかまわない かと思っております。どのように思われますか?
>>247 違う。staticなものは、フィールドもメソッドもオーバーライドされない。
各クラスオブジェクトに属するだけ。
俺ならDIコンテナにインスタンス管理させてSingletonオブジェクトとして生成されるように設定する。
> Factoryクラス自体が情報を保持していて それ、設計に問題あるんじゃないか? というのはさておき、そのような用途ならstaticで構わん気もする。 あくまで生成だけを行うFactoryであれば。
入力された文章中のひらがなと漢字を区別して、 それぞれ分割したいのです。 例えば入力が ここは大学の教室です とあったとしたら str1 = ここは str2 = 大学 str3 = の str4 = 教室 str5 = です といった具合です。 正規表現を使えば出来そうだということはなんとなく分かるんですが… アドバイスをお願いします。
251 :
243 :2005/06/22(水) 15:29:28
ご返事、遅くなりましてすみません。継承については根本的に勘違いしていた ようです。勉強します。 DIコンテナについては全然知らないので、今回は時間も無いし、とりあえず static でやってみます。いろいろありがとうございました。
>>250 java.lang.Character.UnicodeBlockを使ってごにょごにょ。
正規表現をつかうのはかえって難しい。
ところで、日本語localeでのjava.text.BreakIterator.getWordInstance()
はどういう動作になるんだろうか。
>>250 あえて正規表現を(無理やり)使って書いてみた例。
String test = "ここは大学の教室です";
String[] hoge = test.split("[^ぁ-ん]+");
String[] hage = test.split("[ぁ-ん]+");
String[] moge = new String[hoge.length + hage.length - 1];
for(int i = 0; i < hoge.length - 1; i++){
moge[i * 2] = hoge[i];
moge[i * 2 + 1] = hage[i + 1];
}
moge[moge.length - 1] = hoge[hoge.length - 1];
// mogeにばらされた文字列が入ってるはず。
無論実際にこんな処理を書くのはお勧めしない。
こういう処理は実は正規表現を使わずごりごり無骨に(?)処理した方が良い。その方が軽いし。
複雑な文字列操作は正規表現で、という思い込みは覚えたてのころはありがちだ罠。
どういうことがやりたいのかようわからんけど、 構文解析とか形態素解析のクラスライブラリみたいなの、 どっかが出してなかったっけ。
posix扱えるjavaのライブラリを誰か ヒントだけでいい! シグナルびんびん弾けるライブラリ知りません?
257 :
デフォルトの名無しさん :2005/06/22(水) 20:04:35
コマンドプロンプトでDドライブのディレクトリに移動するにはどうすればいいですか? C:...からはじまってcd D:\...と打ってもぜんぜん移動してくれません
さんくるkさんくす
260 :
デフォルトの名無しさん :2005/06/22(水) 22:45:59
javaプログラムで、ボタンを押したら新規の画面を表示(生成)し、また 同じボタンを押したら、同じ新規の画面を表示(生成)するサンプルプログム を作りたいですのでが、なにぶんにも力不足でつれません。 アドバイスをお願いいたします。(新規の画面生成を繰り返す方法) 参考URLでも結構です。
button = new Button("氏ね"); button.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ Frame f = new Frame("氏ね"); f.setVisible(true); } });
後でどうとでも逃げられるようほのめかして去るのって最近はやってんの?
>>262 ,263
文句いうのならハッキリ指摘すれ
ちっさいやつらだなぁ
おまえら、意見言うところで言わないから「使えない」PGなんだよ いつまでたっても・・・
>>262 最小セットで質問に答えたつもりだが? ちゃんとしたコードに貼り付ければ実行できるし。
1. コードが完全じゃないのが気に入らない
2. 出したウィンドウが消えないのが気に入らない
3. 全角空白でインデント付けてるのが気に入らない
4. 無名 inner クラスを知らない
5. その他
267 :
デフォルトの名無しさん :2005/06/22(水) 23:32:43
シンボルを解釈処理できません。と,いうエラーが出るのですが どういう事が原因なんでしょうか?
268 :
237 :2005/06/22(水) 23:33:24
>>238-239 レスありがとうございます。ライブラリクラスに変数列を渡す形にすることにします。
今作っているプログラムでクリッピングの操作は数千のオーダーで使うので、ライブラリ
にした法が良いかなと思っています。
>>241 宿題ではありません。
>>267 コンパイラに言われたことを全て晒しさらせ
くらすめいめそっどめいぬるぽへんすうめいが間違っているまたはひつようないんぽーと宣言をおこなっていない
271 :
267 :2005/06/22(水) 23:47:07
javac AddCross.java AddCross.java:18: シンボルを解釈処理できません。 シンボル: メソッド setCB (CrossBlocks) 位置 : Inputplate の クラス ip.setCB( cb ); ^ エラー 1 個 メソッド名も変数名も間違ってないです.
272 :
267 :2005/06/22(水) 23:56:58
解決した
↓怒りの鉄拳
_ ミ ∠_) / / \\ ウイーン Γ/了 | | ウイーン |.@| | | ガッガッガッ | / | . 人 |/ | < >_Λ∩ <267 _/ | //. V`Д´)/ (_フ彡 /
byte[] a= (なんか配列) を String b = new String(a, "UTF-8")とやってから b.getBytes("UTF-8")とやっても元のAの配列に戻ってくれません 数も合わねー こういうものなんでしょうか? 元にもどる方法がありましたら誰か教えてください
277 :
262 :2005/06/23(木) 07:13:33
278 :
262 :2005/06/23(木) 07:13:51
749は無視してくれ。
280 :
デフォルトの名無しさん :2005/06/23(木) 07:20:31
>>276 具体的にbyte配列にどんなのを使っているの。具体的数値とかどうやって得られたとか。
>>280 そんなの関係ありますか?値によって動きが違うんですか?
282 :
デフォルトの名無しさん :2005/06/23(木) 07:34:51
あります。
283 :
276 :2005/06/23(木) 08:41:03
>>280 普通の文字列を配列にしたものではないです。
そういうのだと上手くいきますね。
配列に入ってる値はbyteの域内のほぼランダムな値です。
十進数で表示させると−128から128までの値のどれかがめちゃくちゃに10個くらいならんでます。
なんか変な説明ですいません
そもそもビットとかバイトとにもか詳しくないので
宜しくお願いします。
284 :
デフォルトの名無しさん :2005/06/23(木) 09:26:34
UTF-8のために規定された範囲 0x0〜0x7F 以外ではバイト配列と文字は一対一に対応しない。 ランダムなバイト配列をUTF-8で文字に変換するという操作の意味を考え直すべきかと。
>>283 でたらめなバイト列がUTF-8として解釈できるはずないので、String化
するときに?にでも換えられているはず。UTF-8じゃなくてISO-8859-1に
すばれ思い通りになるかもしれないが、そもそもそういうバイト列を
Stringにする必要がある時点で、何かがおかしい。なんでStringにした
いのか?
おかしいのか? Base64 とかでエンコードすればいい話じゃねーの?
何がしたいんだ
290 :
276 :2005/06/23(木) 10:55:38
元々はバイナリのデータなんですがなんかエルダップに登録して取り出すとUTF-8でエンコードされた文字列が返ってきちゃったのです。 とりあえず可逆でエンコードデコードできないのは教えていただきましてわかったので設定見直してちゃんとバイナリ返すようにするか それがどうしても駄目なら登録でベース64で変換してから登録するようにします。 有難うございました
こういう勘違いしたまま去っていくやつは そのまま見送ったほうがいいんだろうな。
Base64 ネタはこのタイミングで出すべきだったなw 敗因は早漏
1年程前にjava勉強しようとして4冊くらい本買ったんですが、 途中で辞めてしまいました。 また初めてみようと思ってるのですが、1年前の本でも大丈夫ですか? あたらしく買ったほうが良いでしょうか?
typedefはないのですか?
無いよ
299 :
デフォルトの名無しさん :2005/06/23(木) 17:55:58
JEditorPane で setContentType("text/html") した後に画面で入力を行い getText() すると、いわゆる全角文字がすべて ddddd; にエスケープされて しまうんだけど Unicode のまま取り出す方法は無いですかね?
>>299 > いわゆる全角文字がすべて ddddd; にエスケープされて
ウチではされなかったけど。
JavaでMp3プレイヤーを作っています。Linux環境です。
URLを入力し、以下のメソッドを呼んでいます。
public void PlayMP3(URL urlPass){
try{
Player mp3Player = Manager.createRealizedPlayer(urlPass);
mpePlayer.start();
} catch(NoPlayerException npe){ return; }
} catch(CannotRealizedException cre){ return; }
} catch(IOException ioe){ return; }
}
本来は例外対処もちゃんと書いております。
URLが、
http://から始まるものであれば 、問題なく再生されます。
しかし、URLがディスク上のファイルパスの場合は実行時にエラーが出ます。
ファイルパスはlinux環境なので、URL url = new URL("file:" + filePass );
としています。filePassはString型で、例えばtext形式のファイルを読込ませて
表示するものは上手く出来ているので、filePassは正しく作られています。
HDDに記録されたmp3ファイルを再生するには、どうしたらよいのでしょうか?
次レスに報告されたエラーを載せます。
標準出力を入れてみた結果、Player mp3Player = Manager.createRealizedPlayer(urlPass);
の行でエラーが出ている様です。
302 :
301 :2005/06/23(木) 20:22:23
java.lang.NullPointerException at com.ibm.media.parser.video.MpegParser.convBytesToTimeAV(MpegParser.java:781) at com.ibm.media.parser.video.MpegParser.updateDurationAudioVideoOnly(MpegParser.java:846) at com.ibm.media.parser.video.MpegParser.updateEOMState(MpegParser.java:954) at com.ibm.media.parser.video.MpegParser.initTrackAudioVideoOnly(MpegParser.java:632) at com.ibm.media.parser.video.MpegParser.getTracks(MpegParser.java:330) at com.sun.media.BasicSourceModule.doRealize(BasicSourceModule.java:180) at com.sun.media.PlaybackEngine.doConfigure1(PlaybackEngine.java:229) at com.sun.media.PlaybackEngine.doConfigure(PlaybackEngine.java:193) at com.sun.media.ConfigureWorkThread.process(BasicController.java:1370) at com.sun.media.StateTransitionWorkThread.run(BasicController.java:1339) 上で書いた問題と思われる個所を try{ }catch(NullPointerException npe){//} で囲んで見ましたが、ここでcatchされず、エラー表示に変化はありませんでした。 よろしくお願いします。
303 :
デフォルトの名無しさん :2005/06/23(木) 23:11:05
261 亀レスですません。 ありがとうございました。他の方もありあがとう ございました。連続の意味が異なりました。 IEで例えると ファイル -> 新規作成 -> ウィンドウ と操作するウィンドウが連絡して開くという意味でした。
>>301 >Player mp3Player = ...
>mpePlayer.start();
mpePlayerとmp3Playerは別?
urlPassの中身がnullでないかは大丈夫だよね?
>>242 EclipseのJAR生成機能は漏れ的には不満だな。
Antのほうが融通が利くというか。
ホントに他人に宿題をやらせようとする甘えん坊大学生ばかりが質問するスレになって だんだんウザイスレになってきたな。
携帯Javaで一バイトでも削りたくて JarタスクにMANIFEST.MFからantのバナー削る(というか、挿入しない)オプション付けたのを ふと思い出した まぁ小手先の細工はしょせん小手先の細工ですたが。
JAVA初心者なんですが、JAVAってexeファイルは作れないのでしょうか?
310 :
301 :2005/06/24(金) 02:05:11
>>304 レスありがとうございます。
>mpePlayerとmp3Playerは別?
タイプミスです。mp3Playerです。
>urlPassの中身がnullでないかは大丈夫だよね?
はい、ちゃんとパスは入っていました。
createRealizedPlayerメソッドの中にtry catchがあってそこで例外を
拾っているのでしょうか・・・。
JMFはクラスの解説サイトとかが乏しいので苦難しております。
>>305 Eclipseってへんなantつかってるの?
(゚Д゚)ハァ?
313 :
デフォルトの名無しさん :2005/06/24(金) 10:00:46
最近の大学生は教えて君が多いな。 しかも教えて貰うことが当たり前だと勘違いしている。 で、思い通りにいかないと逆ギレして暴れる。 まるで中学生みたいだ。 最近の大学生は中学生みたいな餓鬼ばかりなのか。
swingの基礎を勉強しているのですが テキストボックスに文字をタイプし その後ボタンを押すと,下にその文字が表示される というプログラムを書こうと思い,以下のように書いたのですが なぜか文字がちゃんと表示されません. いろいろ考えたのですが原因がどうしてもわかりません どなたか教えてくださいませ
316 :
315 :2005/06/24(金) 11:16:58
import javax.swing.*; import java.awt.*; import javax.swing.event.*; import javax.swing.*; import java.awt.event.*; public class TestButton extends { private static String labelPrefix = "New string:"; private String newString; private JLabel label; private JTextField text; class ButtonAction implements ActionListener { public void actionPerformed(ActionEvent e) { label.setText(labelPrefix + text.getText()); } } public Component createComponents() { label = new JLabel(labelPrefix + "XXX"); text = new JTextField(); JButton button = new JButton("Move!"); ButtonAction buttonListener = new ButtonAction(); button.addActionListener( buttonListener );
317 :
315 :2005/06/24(金) 11:17:42
JPanel pane = new JPanel(); pane.setLayout(new GridLayout(0, 1)); pane.add(text); pane.add(button); pane.add(label); return pane; } public static void main(String[] args) { try { UIManager.setLookAndFeel( UIManager.getCrossPlatformLookAndFeelClassName()); } catch (Exception e) { } JFrame frame = new JFrame("SwingApplication"); SwingApplication app = new SwingApplication(); Component contents = app.createComponents(); frame.getContentPane().add(contents, BorderLayout.CENTER); frame.addWindowListener( new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } ); frame.pack(); frame.setVisible(true); } }
318 :
315 :2005/06/24(金) 11:29:30
事故解決しました 板汚しごめんなさい
キーボード入力した文字が数値か 判定したいのですが何を使ったら宜しいですか?
最近のって、昔からだろw 最近にちゃんねるはじめたのか?
>>300 簡単なサンプル作ってみた。使い方が悪いのか環境が悪いのかどっちだろう?
すみません、ちょっと長いですが。
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class a extends JFrame{
public a(){
final JEditorPane editor = new JEditorPane();
editor.setContentType("text/html");
this.getContentPane().add(editor);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.out.println(editor.getText());
System.exit(0);
}
});
}
public static void main(String[] args){
System.out.println("Locale : " + Locale.getDefault());
System.out.println("Encoding: " + System.getProperty("file.encoding"));
JFrame f = new a();
f.setVisible(true);
}
}
(続き) ↓ 実行して「あいうえおabcde」と入力しクローズ (ddddd; がデコードされたらゴメン) Locale : ja_JP Encoding: MS932 <html> <head> </head> <body> <p> あいうえおabcde </p> </body> </html> java version "1.4.2_07" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_07-b05) Java HotSpot(TM) Client VM (build 1.4.2_07-b05, mixed mode)
デコードされた orz あいうえおabcde
String型の文字のバイト数を数えるにはどのようにすればいいのでしょうか? lengthでは無理ですか?
getBytes().length
<OBJECT>#toString()を実行すると、 <OBJECT>がString型だったら文字列が返ってきますけど、 配列とかbeanとかだと、「クラス名@ハッシュコード」という形になりますよね。 これを、クラス名@ハッシュではなく、 中身が視認できる形式でダンプしてくれるライブラリがあった気がするんですが、 ご存じの方います? jakarta-commons-langのObjectUtilsやStringUtilsを漁ってみたんですが、 目的のものがなかったとです。。。
>>326 toString()をオーバーライドしなされ
多分聞きたいのは java.beans.XMLEncoder/XMLDecoder の事だと思うよ。
ある条件を満たすまで1秒間隔で画像を表示させていくという プログラムを作っているのですが,Timerクラスを使ってもうまく行きません。 sleepメソッドやwaitメソッドも試しましたがどちらも駄目でした。 どうにかして一定時間止めるようにしたいのですが,何かうまい方法はありませんか??
333 :
デフォルトの名無しさん :2005/06/24(金) 22:12:34
>>332 @
private class BActionListener implements ActionListener{
public void actionPerformed(ActionEvent ae){
A.setEnabled(false);
B.setEnabled(false);
final Obje o1 = getObje();
d.setObje(o1);
// 一定時間を待つ
java.util.Timer t = new java.util.Timer();
t.schedule(new TimerTask(){
public void run(){
backObje.setIcon(o1.getIcon());
AButton.setEnabled(true);
BButton.setEnabled(true);
}
}, 1000);
334 :
デフォルトの名無しさん :2005/06/24(金) 22:13:07
A while(d.getValue() < CONSTANT){ t.schedule(new TimerTask(){ public void run(){ d.showObje(); } }, 1000); final Obje o2 = getObje(); d.setObje(02); // 一定時間を待つ t.schedule(new TimerTask(){ public void run(){ d.showObje(); AButton.setEnabled(true); BButton.setEnabled(true); } }, 1000); } } } showObjeが画像表示メソッドです。 ↑ 逆にすればよかったorz
スレッドに問題があるのかな?
while節で「1000ms後に再描画」というタスクを繰り返しスケジュールしてりゃ当たり前だろ。 Timer#schedule(TimerTask,long,long)で一回だけタスク指定して条件が整ったらキャンセル汁。
>>336 もう少し詳しくお願いします
一回だけタスク指定とか言われてもちょっとぴんときません。
その抜き出したコードだけじゃ分からんところが多すぎると思うんだが
339 :
デフォルトの名無しさん :2005/06/25(土) 01:53:14
Eclipseを使ってjarファイルを作ろうとしたところ、 できたファイルをダブルクリックすると Failed to load Main-Class manifest attribute from... というメッセージが出てきてしまい実行できません。 このような場合、どうすれば実行可能なjarファイルができますか?
>>337 メソッドまで指定してるってのにその反応かよorz
ピンと来ないとか寝ぼけた事言ってないで、まずこれを読め。
ttp://java.sun.com/j2se/1.5/ja/docs/ja/api/java/util/Timer.html んで、藻前が使ってるのはこれ「Timer#schedule(TimerTask�task,long�delay)」だが、これだと
delay ms後にtaskを一回実行するだけだ。
で、漏れが言ってるのは、こっち「Timer#schedule(TimerTask�task,long�delay,long�period)」を使って、
以下の様にすれば、whileループなんか要らねーだろって事だ。
new TimerTask(){
public void run(){
#ここに描画前処理(表示画像の切り替え等)
d.showObje();
if(#終了条件が満たされていれば){
#ここに終了時処理
cancel();
}
}
};
341 :
デフォルトの名無しさん :2005/06/25(土) 02:38:40
閉じるボタンを押しても終了しないJarファイルを終了させるには どうすればよいですか?
タスクバーを左クリック → タスクマネージャ → アプリケーション、で該当するアプリを選択してタスクの終了。 またはプロセスタブで javaw.exe を選択してプロセスの終了。
既存のアプリ(Servletなやつ)の持ってるサービスを MessageDrivenBean経由で呼べと言われました どうするのがクールでしょうか? やってもよいこと MDBが動く鯖に既存アプリを置いてもよい 制約 RMI禁止(なんか嫌いだそうな) WebService禁止(なんか嫌いだそうな) 絶対MDB使え(JMS直接使用禁止)
344 :
343 :2005/06/25(土) 04:48:16
ようするにSOAP on JMSみたいなことをしたいようです とりあえず現状では EAR WAR(自分アプリ) MDB lib 使用するライブラリ一式 という構成にしてクラスロダを共有させてしまい MDBから自分アプリのクラスを直接触れるようにして解決しています
345 :
343 :2005/06/25(土) 04:50:50
現状の構成の訂正 EAR WAR(自分アプリ) without クラス、ライブラリ MDB lib 使用するクラス、ライブラリ一式
>>341 ターミナルからps axして、pidを調べ、killで止める
お願いします。 graphicsクラスを使って表示した図形をbmpなりpngなりの画像で保存する方法って、ありますか? Alt+PrntScrnで毎回保存するのはばかげているし。
こんなとこか。 sizeとsuffixはお好みで。 importは必要に応じて。 BufferedImage image = new BufferedImage(size.width, size.height, BufferedImage.TYPE_INT_RGB); Graphics g = image.createGraphics(); component.paint(g); Iterator<ImageWriter> i = ImageIO.getImageWritersBySuffix(suffix); while (i.hasNext()) { ImageWriter writer = i.next(); try { ImageOutputStream output = ImageIO.createImageOutputStream(file); writer.setOutput(output); writer.write(image); output.close(); break; // or return true; } catch (final IOException e) { //エラー処理 } } // return false; breakした場合は保存されてる。 breakせずにループを抜けてしまった場合は適合するImageWriterがなかった。 メソッド化するなら真偽値で返したほうがいいかもな。
いかん、手持ちのコードから取ってきたのでcomponentの中身を 画像に吐き出すコードになっている。 component.paint(g) のところを g.draw(xxx)の呼び出しの羅列に してももちろんOKのはず。
ありがとうございます。よく分からない部分もあるけど試してみます。
351 :
デフォルトの名無しさん :2005/06/25(土) 23:23:37
jarに関する質問です。 packageなしでコーディングをしたfoo.classとbar.jpg、SWT.jarをhoge.jarにまとめた場合 マニフェストのclass-pathにはどう記述すればいいですか? 普通に Class-Path: . swt.jar としてしまうとhoge.jarと同じディレクトリをみてしまうし Class-Path: hoge.jar でも怒られてしまいます…
>>351 jarのなかのjarはクラスパスに含めることは出来ない。
353 :
351 :2005/06/25(土) 23:35:46
>>352 回答ありがとうございます。
ではjarの中にjarを入れてはいけないということでしょうか?
また、jarの中にjpgを入れた場合も同様にダメなのですか?
354 :
351 :2005/06/25(土) 23:46:42
ageます
355 :
デフォルトの名無しさん :2005/06/26(日) 00:18:23
jar の中に jar はだめ。どうしてもしたいなら展開して含めればいいが 勝手に人のものを、自分の jar に含めるのはお勧めできない。 jpg は問題ない。
356 :
351 :2005/06/26(日) 00:37:18
>>355 勉強になりました。ありがとうございます。
357 :
デフォルトの名無しさん :2005/06/26(日) 03:19:19
他のファイルから↓のように書いて図形を持ってきました。 /********** paint ***************/ public void paint(Graphics g) { ○○○ h3 = new ○○○(200, 100, 50, Color.blue, Color.green); h3.construct(g); } その図形をGUIプログラムによって表示された画面をクリックしたときに表示されるようにしたいんですけど、 public void mouseClicked(MouseEvent e) { Graphics g = getGraphics(); ← ここにはなんて書けばいいんでしょうか? (e.getX() e.getY()を使って) g.dispose(); }
358 :
デフォルトの名無しさん :2005/06/26(日) 03:29:23
解決しました。スレ汚しすいません。
>>351 jarの中のjarを読み込めるClassLoaderを作って
実行時にそのClassLoaderを使って自分で読み込めばよい。
JARファイルに含めたファイルはgetResource等で読み込むことができますが、 このファイルの最終更新日時を取得することは可能でしょうか?
361 :
デフォルトの名無しさん :2005/06/26(日) 10:29:14
JSPで\web-inf\classesに作ったクラスを使用するにはどうしたらいいですか?
>>360 に便乗で質問させてください。
getResourceをstaticブロックで行うことは可能でしょうか。
364 :
デフォルトの名無しさん :2005/06/26(日) 13:38:54
public char assignGrade(){ //double mean = computeMean(examScores); if(Statistics.computeMean(examScores)>= 90) && (Statistics.computeMean(examScores) <= 100) return 'A'; こいつが、illegal start of expressionというエラーを出します。 いきなり、if statementを使うというのはみとめられてないのでしょうか??
()の組み合わせを数えてみれ
>>363 public class Foo{
static{
URL url = Foo.class.getClassLoader().getResource("...");
}
}
367 :
360 :2005/06/26(日) 14:53:56
やっぱりJARファイルの中のファイルの最終更新日時、というのは ムリなんでしょうか。
JAR ファイルの場所が分かるなら ZIP ファイルとして読み込みゃ分かるだろ。 そもそも何がしたい? 設定の自動リロードか? バージョン表示か?
>>362 クラスパスさえ通っていればimportはまったく関係ない
>>368 アプレットを含めたJARファイルを作成して
<applet archive="〜.jar" ・・・>
という風にしていて、JARファイルの中のファイルをローカルにコピー
するのですが、既にコピーされている場合はその処理を飛ばす、
ということをしたいのです。
これだとファイルの存在チェックをすればいいのですが、そのファイルを
更新した場合は上書きする、というようなことをやりたいのです。
分かりにくくてすいません。
>>370 素直にJWS使ったら? まあjava.util.zipパッケージ使って
自分で全部処理するって手もあるけど。
>>369 いつも FQN で書いてんの?
>>370 毎回上書きで良いと思うが。更新されたか知りたければ 2 ファイルを
バイナリレベルで比較でも良い。
>毎回上書きで良いと思うが。 パフォーマンスとか無視?
>>372 >更新されたか知りたければ 2 ファイルをバイナリレベルで比較でも良い。
それでどっちが新しいかわかるん?
>>373 ファイルサイズが数百MBとか、VPN on ダイアルアップでファイル共有してる
ディレクトリとかならともかく、起動ごと程度の頻度で現実的に問題になると?
>>374 JAR に入ってるのが「真」だろ? おまえスレ読んでねーだろ。
377 :
369 :2005/06/26(日) 21:13:29
>>372 >いつも FQN で書いてんの?
>JSPで\web-inf\classesに作ったクラスを使用するにはどうしたらいいですか?
という質問に対して
>importする。
という回答がおかしいといっているだけ。
揚げ足取られるのが怖いのか、自分に自信が無いのか、ホノメカスのが 格好良いと思ってるのか、否定しといて自分の意見を言わない奴が最近 目に付く。
>>375 その手の条件は一切書かれていなかったよね。
キモッ
>>378 言えてる。
ようするに厨房が増えたってことだね。
最近の大学生にもああいうバカが増えてる感じだ。
アルバイトとして入ってきた学生プログラマのうち
何人かは自己中で我が儘で態度がでかい。
そういう奴が多い。
そのくせ寂しがり屋というのが笑えるが。
>>376 JARから出たファイルに手を加えることがあった場合とかに
それじゃわかんないだろうと思ったん。
高校、大学くらいの頃は斜めに見るのがカッコいいと思うお年頃
リアル
388 :
120 :2005/06/26(日) 23:19:29
>投稿日時: 2005-06-22 16:39 上記について、案件がなくなりました。 >失礼しました。 ワラタ
>388 ワロスwww
アプレットで、ボタンをクリックしてWEBページを開きたいんだけど そういう事をする為のライブラリってありますか?
AppletContext#showDocument()
393 :
デフォルトの名無しさん :2005/06/27(月) 06:38:29
) int[] x = {10, 12, 15, 8, 6}; int[] y = {5, 5, 6, 10, 12} Vector temp = new Vector(); for (int i = 0; i < x.length; i++) { boolean flag = false; for (int j = 0; j < y.length; j++) { if (x[i] == y[j]) flag = true; } if (flag) { temp.add(new Integer(x[i]); System.out.print(x[i] + ", "); } } 上のコードのoutputが何で、10,12,6になるのかわかりません。 説明もらえますか?
>>393 そのコードだとその結果になるのは当然だとしか言いようがない。
おまえが期待する結果は何だ?
xとかyとかiとかjとか配列とか あんさんはエクセルか!!!!!!!!!!!
396 :
デフォルトの名無しさん :2005/06/27(月) 07:03:16
どんな流れで、そうなるのか教えてちょ 。
398 :
デフォルトの名無しさん :2005/06/27(月) 08:24:10
>396 どんな答えを求めてるの? それ基本的な構文しかないんだけども、 英会話だとばーなーなー言ってるレベル、説明って全部教えろなのか、 自分のスペックを晒せ!期待する返答のテンプレをはれ!! 取り乱してしまったお詫びに答えてみます。でっなに答えるんだ flag = x[0] == y[0]; flag = x[0] == y[1]; flag = x[0] == y[2]; flag = x[0] == y[3]; // 10 == 10 temp.add(new Integer(x[i]); System.out.print(x[i] + ", "); flag = x[0] == y[4]; flag = x[1] == y[0]; 通じないなら無駄だやめちまえ、故郷へかえればかもん >397 質問?それはきっとclasspathだよ!
FlowLayoutで垂直方向に中央揃えって出来ませんか?
400 :
デフォルトの名無しさん :2005/06/27(月) 09:36:27
2.The class Fraction represents the set of integer fractions, and has methods Fraction(num, denom), getNum(), getDenom(), setNum(num), setDenom(denom), equals(x) with obvious meaning. Given Fraction a = new Fraction(2,3); Fraction b = a; Fraction c = (Clone) a.clone(); final Fraction d = new Fraction(2,3); Fraction e = new Fraction(a.getNum(), a.getDenom()); (a) (a==b) is it true or false? (b) (a.equals(b)) is it true or false? (c) (a==c) is it true or false? (d) (b.equals(c)) is it true or false? T (e) (c.equals(e)) is it true or false? (f) Is the assignment d = b; legal? (g) Is the method invocation c.setNum(5) legal? (h)Is the method invocation d.setNum(5) legal? After the assignment a.setNum(4); is (i)a.equals(b) true or false? (j)a.equals(c) true or false? (k) a == b true or false? 英語ですいません、答え合わせをしたいんですけど、どなたか お願いします。
>>400 > Fraction c = (Clone) a.clone();
コンパイル通らねーんじゃ?
>400 答え合わせならまずキミの解答を書こうな。 しかし、Fraction(num, denom)はmethodじゃなくてconstructorだろ、と言いたい。
TreeSetがTreeMapを使われて実現されているのは何故ですか? TreeMap<E, Object>となっていますが、Valueの方を使わないなら無駄なので、 Treeを使ってTreeSet, TreeMapを実装した方がよさそうですが。
わざわざ別で実装するの面倒だしな
405 :
デフォルトの名無しさん :2005/06/27(月) 23:04:24
Tomcat 単体で(Apache無し)で同じコンテキストに複数の docBase を 指定することは可能でしょうか? イメージ的にはこんな感じです。 <Context path="/aaa" docBase="C:\docs;C:\jsp" 〜/> 下記はだめでした。(Tomcat が起動できず) <Context path="/aaa" docBase="C:\docs" 〜/> <Context path="/aaa" docBase="C:\jsp" 〜/> C:\docs 配下に aaa というディレクトリを無理やり作っても×。 <Context path="/" docBase="C:\docs" 〜/> <Context path="/aaa" docBase="C:\jsp" 〜/> Tomcat5.5 にバージョンアップしようとしてるのですが 過去の資産がなぜか静的コンテンツと JSP が同じパスになっています。 本番環境は WebLogic だったので、WebLogic では問題なかったのかもしれません。 以前のローカル環境は Baykit XML Server だったようで docBase="C:\docs;C:\jsp" のような設定が可能だったようです。
初期化ではなく、byteやintなどの配列の各要素にまとめて値を代入したいのですが、 int a[] = {116,184,17663,8211,5816}; みたいな初期化の文みたいにまとめて書く事って出来ませんか? a[0] = 116; a[1] = 184; ... と書くしかないんでしょうか?
>>410 いまいち何言ってるかわからんけど処理の途中に
a = {116,184,17663,8211,5816};
じゃいかんのか?
new int[]{}
1台のマシン上で呼び出される java [arg ...] 常になんかしらのオプションを付加させたかったりします。 java Main 111 から java -Xdebug Main 111 手軽でリスク少ない方法について少し語りませんか? わたしは聞いてます。 java.bat とか #!java しか浮かびません 呼ばれ方で全く無意味になり大変 知恵を貸してください。
>410 write(byte[])じゃだめなのかい? >414 Good Job! みな!紳士の414がいい議題をもってきた、熱く語ろう
Object.clone() をオーバーライドした関数で「深いコピー」を行う場合、 その clone メソッドが C++ で言うコピーコンストラクタに相当するわけですよね?
深いコピーってなんだ?
>>416 コピーコンストラクタがディープコピーかという話はおいて置いて、まぁそういう事だ。
419 :
416 :2005/06/28(火) 14:22:32
>>418 有難う御座います。勉強になります。
>>417 クラスのメンバへの参照だけをコピーするのが「浅いコピー」
C でいうところのポインタだけを渡したものだと思えばいい。
A.herName = "Emi";
B = A;
B.herName = "Kaori";
System.out.println(A.herName);
これを実行すると A も B も香織さんになる。これが浅いコピー。
メンバーの実体もコピーされる(別な記憶域が確保される)のが深いコピー。
420 :
デフォルトの名無しさん :2005/06/28(火) 15:00:35
Buttonオブジェクトの位置指定で、右、中、左、上、下しかないのでしょうか? J2E1.2では、座標指定で表示できたり、アイコンなどもドラッグ移動できたりした記憶があるのですが。 (なにぶん数年前なので記憶が思い出せない)
すいません質問させてください。 iTextでAcrobat javascriptを定義しようとしているのですが、itextでAcrobat javascriptのfunctionの定義ってできますか? 散々探したのですが、アラートのサンプルしかなく途方にくれています。 よろしかったらお力をお貸しください。
Javaからしばらく離れてたら、すっかりJavaのこと忘れてる 一般的なスタイルとか、クラスとか勉強してきま
JLabelの多次元配列[i][j]としたとき一つのiで宣言できる jの数って8つまでなんですか?それ以上の数で宣言することはできるんですけど、 コンストラクタを呼び出そうとするとArrayIndexOutOfBoundsExceptionがでます。
単に間違ってるだけだろ
ちょっと質問です。 なんで、Javaは、1ファイルに1つのPublicなクラスしか入れられないのですか? 複数入れられた方が、ツリー構造のPublicなクラスを一つのファイルで記述できたりして いいような気がするのですが・・・
オブジェクト指向的に変だからじゃねーの
>>425 ファイルシステムがすでにツリー構造だから、かな?
少なくともひとつのファイル内でツリー構造を表現する方が無理があると思うけど・・・。
ん?ファイルシステムがツリー構造じゃないシステム上で実装されたJavaは(あるとしたら)どうなるんだ?
429 :
デフォルトの名無しさん :2005/06/28(火) 20:40:44
もろ初心者な質問ですいません。 int[] data ={ 4,8,1,0,8,0,1 }; System.out.println("before"); for (int i=0; i < data.length; i++){ System.out.print(data[i]+" "); } System.out.println(" "); for (int i=0; i < data.length -1; i++){ for (int j=i+1; j < data.length; j++){ if(data[i] > data[j]) { int a= data[i]; data[i]= data[j]; data[j]= a; } } } System.out.println("after"); for (int i=0; i < data.length; i++){ System.out.print(data[i]+" "); } } } このソートプログラムなんですが、模範解答のようにやるとちゃんと左から小さい順番に数字が並ぶのですが、自分が考えるとどうしても最終的に int[] data ={4,1,0,8,9,1,8} という並び順にしか理解ができないのです。 私の考えてやっていくと、まず二つのforによって比べられている最初の数字をみてdata[i]<data[j]となってifの条件式にあてはまらないので4が左のまま。 次に比べる数字はdata[i]>data[j]となるので8と1を交代させ→int[] data ={ 4,1,8,0,8,0,1 }、次も[i]>data[j]となるので8と0を交代させる→int[] data ={ 4,1,0,8,8,0,1 }。 自分の考えでやっていくと最終的にint[] data ={4,1,0,8,9,1,8}となる。 このように左から小さい順にならばないのです。 先輩方私にどうか正しい考え方を教えてください
なんでもそうですがコンピュータはミスをしません 間違った指令を忠実に実行します 己を信じるな、全部己を疑え
>>429 for (int i=0; i < data.length -1; i++){
for (int j=i+1; j < data.length; j++){
if(data[i] > data[j]) {
int a= data[i];
data[i]= data[j];
data[j]= a;
}
// ↓これでも入れてよく考えろ
System.out.print("[" + i + ":" + j + "] ");
for (int x=0; x < data.length; x++) System.out.print(data[x]+" ");
System.out.println();
}
}
ちょっと質問します。 import java.awt.*; import java.awt.event.*; public class DotTest extends Canvas{ private DotTest(){ addMouseListener(new MouseAdapter(){ public void mousePressed(MouseEvent me){ Graphics g = getGraphics(); // update(g);paint(g); repaint(); g.fillRect(me.getX(), me.getY(), 5, 5); } }); Frame f = new Frame("DotTest"); f.add(this); f.setSize(400,400); f.setVisible(true); } public static void main(String[] args){ new DotTest(); } } マウスでクリックすると、そこが黒く描画され、 さらにクリックすると、先にクリックした点が消えてあらたな点が描画されるプログラムなのですが、 repaint()を使うとうまく描画されず、update(g)やpaint(g)を使うとうまくいくのはなぜでしょうか。
クラス名・変数名に迷ったら書き込むスレ。Part5
http://pc8.2ch.net/test/read.cgi/tech/1109330204/606 ◇- has> →HashMap
設置場所クラス<名前適当
◇- 1 Aggregation 0..* →InstallationAdapter◇- 1 Aggregation 1→Machine
固有ID(配置番号)はHashMapのキーがそのまま使えませんか?
固有ID特有の条件(追加不可等)は設置場所クラスで実装。
導入日等が不変であるなら(コンストラクタ)InstallationAdapter(Date, Machine)
等としてImmutable化。
こんな感じだとどうでしょう?
435 :
デフォルトの名無しさん :2005/06/28(火) 21:22:05
ALTキーを押しっぱなしにしてくれるような命令はありませんか? あるボタンを押したときと同じ処理を,キーボードの'A'を押したときにも 行わせたいのですが,このようにするにはALTも押さなくてはなりません。 (ニーモニックキーとして使用) KeyListenerを実装しようとも思ったのですが, それだとactionPerformedの中の処理と同じ内容をコピーしてこなくてはいけないので 効率が悪いと判断してニーモニックキーを使用しています。
>>435 KeyListener と ActionListener の中で同じメソッドを呼べば良い。
>>436 やっぱりメソッド化ですか。
おとなしくそうします
System.load とか System.loadLibrary でDLLをロードした後、 明示的に解放することは可能でしょうか。
JInternalFrame 内のどのコンポーネントにフォーカスが当たっていようが [CTRL]+[S] で 編集中の内容を保存したいんだけど、JInternalFrame の全部のコンポーネントに KeyListener を仕掛けなきゃだめ?
repaint()はupdate(g)を呼び出すだけなんじゃないんでしょうか?
JEditorPane で選択範囲 (まぁ任意の位置です) を強調したり斜体にしたりフォントや色、 大きさを変えたりするのってどうやるんでしょうか? ヒント教えてください。
HashMapとHashTable ArrayListとVectorの違いがよくわかりません 同期の問題が出る場合後者を使うって感じで問題ないのでしょうか? 前者をラップして使う方法は一応ですが知っています あとHashSetに対応するものもあると思うのですがわかりません・・・ この辺りのコレクションフレームワークの使い分けとかを教えてください
>>444 Hashtabl, Vector は JDK 0.9〜1.1 の頃に使用されていたもの。初期バージョンとはいえ
さすがにコレクションくらい使えないとまずいでしょ。その後 J2SE 1.2 でコレクションフレー
ムワークがきちんと作り直され、Hashtable や Vector は過去との互換性のために残された。
MS JVM (JDK 1.1相当) で動かす前提とかならこれらのクラスが必要だが、それ以外は
Map や List 使っとけ。ちなみに 1.1 までは Set に対応するものは無かった。
446 :
444 :2005/06/29(水) 00:04:50
>>445 ありがとうです
じゃあ同期取る必要があるときはラップして使うのが推奨みたいですね
早いレスありがとうでした
つーか大概同期取りたいときは処理手順が重要になるだろうし いじる場所で排他かけるべし
448 :
デフォルトの名無しさん :2005/06/29(水) 00:39:53
JFrameにKeyListenerって使えないんですか? public void keyReleased(KeyEvent ke){} public void keyPressed(KeyEvent ke){ int keycode = ke.getKeyCode(); if(keycode == KeyEvent.VK_S){ standAction(); } } public void keyTyped(KeyEvent ke){} こんなん作ってみましたけど動きません。
449 :
438 :2005/06/29(水) 00:43:13
>>448 KeyListenerをインプリメントしてない
or
addKeyListenerをしてない
のどちらかだな
>450 private class StandActionListener implements ActionListener, KeyListener というプライベートクラスを使ってます。 actionPerformedの方は問題なく動きます。
>450 解決しました。
453 :
デフォルトの名無しさん :2005/06/29(水) 02:58:22
try{ System.out.println("1. 2. どちらかを選択してください"); InputStreamReader reader = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(reader); String str = br.readLine(); int res = Integer.parseInt(str); if(!str.matches("[1-2]+")){ System.out.println("1、2から選択してください。"); continue;} if(res == 1){ System.out.println("キーワードを入力"); reader = new InputStreamReader(System.in); br = new BufferedReader(reader); str = br.readLine(); String sql = "SQL文"; ResultSet result = stmt.executeQuery(sql); Vector vector1 = new Vector(); String[] array1 = new String[2]; while(result.next()){ array1[0] = result.getString("Res1"); array1[1] = result.getString("Res2"); vector1.addElement(array1); array1 = new String[2];} for(int i = 0;i < vector1.size();i++ ){ String Res1 = null; String Res2 = null; String[] str1 = (String[])vector1.get(i); Res1 = str1[0]; Res2 = str1[1]; System.out.println("Res1,Res2は" + Res1 + "\t" + Res2);}} if(res == 2){1と似ているので省略・・}}catch(IOException e){System.out.println(e + "例外が発生しました");}}} 長すぎる!メソッドを分割しろ!!と怒られました・・。 コツ教えてください
;で改行しろ よ みにくいから だれに怒られたんだ?先輩か?
res==1のブロックはまるごと外に出してメソッドにして呼び出せば一行になる。 BufferedReaderの引数はコンストラクタそのまま書けば一行短くできる。 「リファクタリング」って名著があるよ。
458 :
デフォルトの名無しさん :2005/06/29(水) 09:59:06
import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*;
459 :
デフォルトの名無しさん :2005/06/29(水) 10:00:43
つづき public class Kintai extends JFrame implements ActionListener { JButton button; JLabel label; // コンストラクタ public Kintai(String title) { super(title); // コンテントペインを取得 Container contentPane = getContentPane(); // レイアウトマネージャーを設定 contentPane.setLayout(new GridLayout(2,1)); // ラベルを生成 label = new JLabel("出勤退勤時間設定"); // 文字を真ん中に表示 label.setHorizontalAlignment(SwingConstants.CENTER); // ラベルを追加 contentPane.add(label);
460 :
デフォルトの名無しさん :2005/06/29(水) 10:01:20
つづき2 // ボタンを作成 button = new JButton("書き込み"); // アクションリスナーを登録 button.addActionListener(this); // ボタンを追加 contentPane.add(button); // ウインドウが閉じられたときにアプリケーションを終了するように設定 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // サブコンポーネントの推奨サイズおよびレイアウトに合わせて // この Window をサイズ変更するように設定 pack(); // 表示します setVisible(true); }
461 :
デフォルトの名無しさん :2005/06/29(水) 10:02:21
つづき3 //メイン public static void main(String[] args) { // フレームを作成 Kintai frame = new Kintai("出勤退勤時間設定"); frame.setBounds(0 , 0 , 400 , 200); }
462 :
デフォルトの名無しさん :2005/06/29(水) 10:03:16
つづき4 //アクションが発生すると呼び出されます。 public void actionPerformed(ActionEvent ae) { // イベントが指定されたボタンで発生した場合 if (ae.getSource().equals(button)) { try { FileOutputStream fos = new FileOutputStream("hello.txt"); OutputStreamWriter osw = new OutputStreamWriter(fos); BufferedWriter bw = new BufferedWriter(osw); String msg = "こんにちは 世界"; bw.write(msg); bw.close(); osw.close(); fos.close(); } catch (Exception e) { e.printStackTrace(); } } } } なのですが、ボタンがセンターに来ないのですが、どこか書き忘れているものが、あるのでしょうか?
463 :
t :2005/06/29(水) 10:42:24
JAVAアップレットってどこでよみこめるの?
465 :
455 :2005/06/29(水) 20:26:32
<457 アドバイスありがとうございます。 学校からでは書き込めないので・・・ 未だにできません。 try{ System.out.println("1. 2. どちらかを選択してください"); InputStreamReader reader = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(reader); String str = br.readLine(); int res = Integer.parseInt(str); if(!str.matches("[1-2]+")){ System.out.println("1、2から選択してください。"); continue;} if(res == 1){ System.out.println("キーワードを入力"); reader = new InputStreamReader(System.in); br = new BufferedReader(reader); str = br.readLine(); String sql = "SQL文"; ResultSet result = stmt.executeQuery(sql);
//vectorにデータを格納 Vector vector1 = new Vector(); String[] array1 = new String[2]; while(result.next()){ array1[0] = result.getString("Res1"); array1[1] = result.getString("Res2"); vector1.addElement(array1); array1 = new String[2];} for(int i = 0;i < vector1.size();i++ ){ String Res1 = null; String Res2 = null; String[] str1 = (String[])vector1.get(i); Res1 = str1[0]; Res2 = str1[1]; System.out.println("Res1,Res2は" + Res1 + "\t" + Res2);}} if(res == 2){1と同様なので省略・・}} catch(IOException e){ System.out.println(e + "例外が発生しました");} }} 以上です。 答えはないと言われましたが皆さんのお手本にします。 お願いします
JTextPane の HTML 入出力って非力だな〜。保存形式は <B> やら <FONT> やらだし 再読み込みするとイラン空白挿入されてるし。
>>467 自分でカスタマイズされてはいかがですか?
Doubleからdoubleへのキャストはどうしたらいいんでしょうか?
>>469 キャストはできないので、DoubleのAPIリファレンスを読んで手段を見
付けてください。
>>468 やっぱそれしかねぇよなぁ… つことで今やってるけど。
472 :
デフォルトの名無しさん :2005/07/01(金) 21:06:27
初心者です。 みなさんにお聞きしたいのですが、アプリケーションサーバーは何をお使いですか?
メタフレーム
そーいや Apache のゲロニモって今何やってんの?
Tomcat
>>474 Apache GeronimoはとうとうJ2EE certification(互換性検査)を通ったようだよ。
いよいよか。
477 :
デフォルトの名無しさん :2005/07/02(土) 10:09:40
472です 皆さんありがとうございます。これから参考して選んでいきたいと思います。
javaservletでIPアドレスやホスト名を取得できますか?
479 :
478 :2005/07/02(土) 11:17:08
自己解決しました。スレ汚しスマソ
>>476 Java EE 5 に対応してんのかな?
新しく走らせたスレッドを停止させたいのでsunのページを調べてみたところ、
stopメソッドとdestroyメソッドがありました。
stopメソッドを使った場合、コンパイル時に"推奨されないAPIが含まれています"と
言われてしまいます(sunのページにも推奨されないと書かれていますが)。
そこで、destroyメソッドを使おうと思ったのですが、使い方が悪いのでしょう、実行時
にエラーが出てしまいます。
テスト用のファイルを作ったので、どのように使えば良いのかご教授お願いします。
ttp://www.uploda.org/ ファイル「138951」
パスワード「dtest」
482 :
481 :2005/07/02(土) 16:42:45
ファイルが間違っていました。 ファイル「138915」 です。お願いします。
Thread#interrupt() を呼べ。 そして停止側のスレッドで停止処理を記述しろ。
484 :
481 :2005/07/02(土) 17:04:29
>>483 出来ました!
鬼のような早い回答ありがとうございます!
便乗質問というわけでもありませんが、 僕もThreadのdestroyの使い方が分からないんですね。 destroy()は引数は取らないし、殺したいスレッドが仮にthrという名前だとすると、 thr.destroy(); とするしかないはずなのですが、メソッドが無いというエラーが出ます。 destroyはどう使えばいいんですか?
486 :
デフォルトの名無しさん :2005/07/02(土) 21:17:07
>>476 JBossとどっちがいいんだ?
JBossはHSQLDB, Hiernateを標準サポートしているし
知名度が高いし。
非推奨メソッドはつかっちゃだめということ
JBossはHSQLDBを標準サポートというより組み込みとして使ってるだけじゃないかね Apacheはライセンスがみんな好きだから普及しそうだが 安心して使えるまではしばらく時間がかかると思われ
>>485 どうして非推奨メソッドをあえて呼びたいの?
坊やd(ry
492 :
デフォルトの名無しさん :2005/07/02(土) 23:56:19
おそらく頑固な上司がそのメソッドを非推奨メソッドである ことを知らず、 その上司の思考が新しいJ2SEではなく古いJ2SEで止まっているのだろう。 バカで頑固な上司は新しい技術を導入すべきタイミングを見計らう能力が 無く懐古主義なのでレガシーな非推奨メソッドを使いたがる。
>>492 おまえも「レガシー」という言葉を使いたがるんだな
そんなお前に トヨタ レガシー
頑固な上司はJ2SE5Tigerの使用も躊躇う。 Jakarta製品の使用も躊躇う。
レガシーが嫌なら 古典的と呼んでやればいいか
>>495 「使うのはいいが、影響範囲を洗い出せ!」
とか言いそうだな
存在するとすれば5.0のバグであり、
予測できる影響範囲は無い!
おそらく
>>492 が J2SE という名称が Java SE に変更された
ことを知らず、
>>492 の思考が新しい Java SE ではなく古い J2SE で止まっているのだろう。
バカで頑固な
>>492 は新しい名称を導入すべきタイミングを見計らう能力が
無く懐古主義なのでレガシーな名称を使いたがる。
JavaSEという言い方は6.0からだから まだJ2SE5.0でいいのだが
6.0からはコンマ以下の0は省略する事に決めたらしいのでJava SE 6だろ。
おまいら Sun の思惑どおり、バージョン名の話題に躍らせられてんな。 調子に乗って Java SE 7 から Java 7000 ね。とか言い出すぞ。
残念ながら俺は499だが492とはちがうよ JavaSEと書いておきながら6.0とかいたのは確かにミス 内部バージョンでももう0.1はあげないらしいね sunは伝統的に0.1がメジャーバージョンアップだったけど一般ユーザーにはそんなことしらんから Java2という名前付けたのだが、それを消すのなら最初からやっていろと
まぁ、JavaSE2006とかはありそうな気もする 内部バージョンは6で
505 :
デフォルトの名無しさん :2005/07/03(日) 05:38:28
class A{ private int a = 0; public boolean equals(Object o){ return (o instanceof A) && ((A)o).a == this.a; } } class B extends A{ private int b = 1; public boolean equals(Object o){ return super.equals(o) && (o instanceof B) && ((B)o).b == this.b; } } A a = new A(); B b = new B(); の場合、a.equals(b) と b.equals(a) って意味的に違うよな? 継承関係を考慮した equals() ってどう実装するの?
506 :
485 :2005/07/03(日) 05:54:37
何だか僕の質問からえらい方向に行ってますね・・・。
>>487 , 489
僕は古いバージョンのものを使っているので、v1.4.0のサイトを見て勉強を
していました。sunのサイトでもそうですが、v1.4.0ではdestroyは非推奨とは
書いていないんですね。
新しいバージョンのサイトを見てみると、確かに非推奨だと書いてありました。
やはり、使うなということなのですね。
でも、非推奨であれ使い方が分からないのは何だか気持ちが悪いです。
stopはv1.4.0でも非推奨ですが、thr.stop(); とやれば使えます。
ではdestroyは???
#上司がどうこう書かれていますが、独学なので違います。
単なるアレルギー反応だから気にするな。「非推奨」のレッテルが貼られてれば どんな低脳でも叩けるから。その証拠に誰もまともに答えず話が脱線してる。 stop() と destroy() の仕様上の違いはクリーンアップをするかどうか、要は ThreadDeath を投げるか、その場で突然死するかだ。stop() を呼び出すと 例外として ThreadDeath が発生し、finally ブロックが実行され synchronized ブロックを抜けてスタックを巻き戻したところで終了する。destroy() はそれを やらず状態不整合が発生してようが即時終了。まぁ今は destroy() は実装 されてないけど。 stop() はスレッドを管理、監視するコンポーネントでよく使う。たとえば無限 ループや無応答で何十分も停止してる処理を停止するためのシステム ツールや、プラグイン型のバックグラウンド処理のフレームワーク作る時など。 だから初心者スレで聞いても「非推奨だから使わない (使ったことない)」と しか帰ってこなくて当然。
>>506-507 公式のドキュメント読めば簡単にわかることだから
だれもわざわざ答えたりしないんですよ
与えられてる情報すら満足に処理できないのは初心者以下です
なんか fj みたいな事言い始めてる奴もいるし
510 :
デフォルトの名無しさん :2005/07/03(日) 09:12:49
非推奨である理由は大抵スレッドセーフの扱いが曖昧だとか 将来わたってその非推奨メソッドを使うと汎用性、拡張性が下がり 修正しなければならない可能性があるからだろうよ。
>514 つまり「死ぬまでテメエのレス読んでろ」と言う意味かと。
高橋メソッドや、もんたメソッドならまかせろ
517 :
デフォルトの名無しさん :2005/07/03(日) 16:40:57
>>505 Effective Java に書いてあったような気がするが、
equals のオーバライドをあきらめる。
または、そのインスタンスのクラスオブジェクトをチェックすれば
(getClass()だっけ)意図した動作になるかもしれない?
ちなみに、equals をオーバライドしたら
hashCode もオーバライドする
>>512 は友達少ない奴なんだろうな。
そして大学でも先生や先輩からも嫌われている。そして相手にされていない。
だから2chで質問しようとしている。
ところがどんな情報が少ない質問にも答えて貰えるのが当たり前だと
勘違いして2chで大暴れしていると。
華麗にスルー
521 :
ぼく :2005/07/03(日) 17:15:48
はじめまして、こんにちは。 JavaでCORBAのプログラミングをしております。 その中でCORBAサーバを立てているのですが、 使われているポート番号が不定です。 port番号は出力しているiorファイルをdecodeして確認しました。 クライアントはそのiorファイルを利用して接続しに来るのですが、 セキュリティの関係で、使用するポートを限定(特定)したいのです。 どこかのWebを参考にしたサンプルですが、以下に示します。 何か、ヒントやxxxを参照しろなど、アドバイスいただければ幸いです。 (環境:Solaris 9 + J2SDK 1.4.2_08) よろしくお願いいたします。 --
522 :
ぼく :2005/07/03(日) 17:20:33
>>521 try{
// ORBの生成と初期化を行います
String[] param = {"-ORBInitialPort", "1050",
"-ORBInitialHost", "localhost"};
ORB orb = ORB.init(param, null);
// RootPOAの参照を取得しPOAManagerを使用可能にします
POA rootpoa = POAHelper.narrow(orb.resolve_initial_references("RootPOA"));
rootpoa.the_POAManager().activate();
// サーバントを生成し、それにORBを登録します
AdapterSyncImpl smsasImpl = new AdapterSyncImpl();
xxxxImpl.setORB(orb);
// サーバントからオブジェクトリファレンスを取得
org.omg.CORBA.Object object = rootpoa.servant_to_reference(xxxxImpl);
// サーバントオブジェクトの文字列化とファイルへの書込み
String str = orb.object_to_string(object);
String filename = "Adapter.ior";
FileOutputStream fos = new FileOutputStream(filename);
PrintStream ps = new PrintStream(fos);
ps.print(str);
ps.close();
System.out.println("Serverが起動しました");
// クライアントからの呼び出しを待ちます
orb.run();
}catch (Exception e){
e.printStackTrace();
}
なんだかまたスレが荒れていますね・・・。
結局は非推奨だから使うなということですね。
>>507 >まぁ今は destroy() は実装されてないけど。
僕はここの認識が無かったようです。
destroyは実装されていないんですね。
文字列の中にascii以外の文字が含まれているかどうかの判定って どのへんのクラスを使えば出来るのでしょうか?
String, Character
そもそも使い終わったスレッドオブジェクトって、 完全に破棄できるの?
意味が分かりません。 スレッドの処理が run() メソッドを抜ければ active でなくなりシステムリソースは 開放され、インスタンス自信もいずれ GC が回収してくれる。
ルートからたどれなくなってスレッドも終了していれば回収してくれるんじゃ?
このように技術系の板ではネタ突っ込みにマジレスされることがあるので注意が必要です。
オブジェクト自身は回収できても自信は回収のしようが無いな
漏れの自信は厨房時代にGCされますたorz
537 :
デフォルトの名無しさん :2005/07/04(月) 23:04:16
ソケットプログラムで、 class A { while (true) { socket = server.accept(); new B(server.accept()).start(); } } とした時、クラスA側のfinallyにはSocketのクローズ処理書いてるんですが、 B側でも閉じる必要があるのでしょうか? 環境によっては再度立ち上げる際に「既にポートが使用されています」とでるので、 問題箇所はガベージ関連ぽいのですが。 イメージ的には、Aのwhile内で毎回ソケットを作成してるので、A側だけで クローズすれば良い気がするのですが、スレッドの場合はアドレス渡しされるという話も ききます。 どなたか教えて下さい。
まず(ry
>>537 ServerSocket serverとSocket socketのどっちの話をしてるの?
あと、server.accept()が2つあるのは間違いだよね。
540 :
537 :2005/07/04(月) 23:21:27
>>539 Socketクラスの方です。
このようなプログラムで例外が発生すると、次回起動時にServerSocketを生成する時点で
エラーが発生するようです。
あとacceptは間違いです。すいません。
JTableでテーブルの各セルを初期化(空白)にしたいのですが、 全てのセルに対してsetText("")をしていると、 テーブルが大きいと非常に時間がかかってしまい困っています。 効率の良い初期化方法ってありますでしょうか。
>>540 「次回起動時に」の問題を解決するのが目的なら、Socket socketの方は関係ない。
server.bind()の前にserver.setReuseAddress(true)すればいい。
「Socket socketのclose()を確実にやるにはどうするか」の件は、Aの
方でfinallyでやろうとしても、最後にaccept()したソケットしか処理
できないんじゃないかい。
>>536 参照切らない限りGCされないはずだぜ。
>>541 setText?
レンダラを自作してるってこと?
545 :
541 :2005/07/05(火) 00:00:59
>>544 ごめんなさい、自分で間違えてました。
テーブルの全てのセルに対して、
setValueAt("", i, j); (i, jはセルのインデックス)
を呼んでます。
これをどうにか高速にできないかなぁと思ってます。
546 :
537 :2005/07/05(火) 00:07:42
>>542 ありがとうございました。参考になりました!
548 :
532 :2005/07/05(火) 00:48:07
>>543 >>536 はきっと厨房時代に引きこもりになっちゃったんだよ。
外部との接触がなくなった→他者から参照されない、ってことだな。
j2sdk1.5.00のjavacで、ソース中に浮動小数点数の0を リテラルで記述するとjavacが落ちるという 謎の現象に遭遇した……。 1.5.04入れたら直ったけど、何だったんだろう……。
AMD64版のJDKは64ビット版のOS用? それともAMD64搭載マシンだったら通常のXPでもOK?
いいわけないじゃない
>>448 同じ現象なんですが、どうすればいいんですかね?
555 :
デフォルトの名無しさん :2005/07/05(火) 22:23:58
同一のクラスローダーでクラスを再ロードすることって出来ないのでしょうか? Javassistでテスト対象のクラスを書き換えながらテストを出来たらいいなぁと思ったのですが…
>>383 そのままおまえにそっくりかえしてやるよ
おまえは現実世界であってもきちがいだろうけど
一週間以上前のレスに噛み付くきちがい ハッケーン
static変数をメソッドの中で定義することは可能ですか? 具体的には、java.util.regex.Patternオブジェクトを毎回生成せずにstatic変数にしているんですが、 特定のメソッドの中でしか使用しないんで、そのメソッドの中で定義できるとうれしいんですが。 private static Pattern pat = Pattern.compile("^\\s*$"); // これをメソッドの中で定義したい public void foo(String str) { Matcher m = pat.matcher(str); ... }
>>558 不可能。
C だとできるんだけどね〜、Java でも使えたら良いのにと思う状況に年に何度か遭遇する。
560 :
558 :2005/07/06(水) 06:39:31
>>559 ありがとう。なんでできないんですかね。簡単に実現できると思うんだけど。
メソッドの中でstaticにする意味って何?
>>558 static の意味と変数のライフサイクルちゃんと分かってるか?
>>562 あるメソッドの中に限定されたスコープを持つ static 変数ってあったら便利よ?
C/C++ とか使ったことない?
Cなら使うけど、C++でつかうようだとクラス設計をちゃんとしたほうがいいよ スコープを最小にしつつ保持範囲を広げるなんてクラス使えないから使うという感じ
private static な変数は public static な変数よりスコープが小さく保持範囲が同じわけだが、 それをメソッドまで縮めると「ノー」? よくクラス設計語ってるねw
>>566 クラス変数とローカル変数の違いがあるから単にスコープを縮めて適用していいと
いうことにはならないと思うが。
クラス変数をメソッドのスコープに限定するという話ですが「クラス変数とローカル変数の 違いがあるから」ってどういう意味ですか? 「Java でできないのは何か理由があるに違いない、だから Java の仕様を支持しておけば 間違いない」 って感じでもっともらしい理由つけてアプローチする展開は虚しい限り。 過去それで覆されたのはアサーション、enum、テンプレート (ボクシング)、可変引数などがあったな。
スコープと保持範囲が一致しないから使いまくればメモリ消費量だけ増えてこまることもあるんじゃね? メソッドの中まで追いかけないとクラスに結びつくメモリ使用量がわからないというのもアレだ
>>568 method static な変数があったとして、それはクラス変数なの?ローカル変数なの?
> クラス変数をメソッドのスコープに限定するという話ですが
これだとクラス変数と読めるが。じゃあクラス変数ではだめな理由は何?
メソッドを使い終わってもローカル変数が生きているのは気持ち悪くないか?
下段は発想が飛躍しすぎ。
>>568 アサーション以外はあからさまにC#対策なんだけどなw
つうかJavaって1.4あたりからなんだか方針転換してるんだよなぁ、NIOとかさ。
1.4からは理想だけではなく効率をもとめるようになってる enumはタイプセーフなenumの実装がないとダメという理由で遅れてた Cのenumならたしかにいらないしね ダイナミックリンクがデフォのJavaでは危険すぎる 可変長引数はObject配列の書き方を変えて制限しただけ printfを実装したかったという理由だけかと 一方scanfの実装がアレだが安全性のためには仕方ないか
アプレットが実行できません。 test2.htmlをダブルクリックした時 "ELIZABETH"という文字を出したいのですが、 灰色の長方形が出てくるだけで、 "ELIZABETH"の文字が出てきません。 appletviewer test2.htmlだと 文字が表示されているのですが。 test2.htmlと、test2.javaと、test2.classは 同じフォルダに入れてます。 test2.html----------------------------------- <head></head> <body> <applet code="test2.class" width="300",height="200"> </applet> </body> </html> test2.java----------------------------------- import java.applet.Applet; import java.awt.*; public class test2 extends Applet { public void init(){} public void paint(Graphics g){ g.drawString("ELIZABETH",50,50); } }
質問です。 JavaMail を使ってメールの送信を行おうとしているのですが、題名、本文と もに2バイトコード1文字の場合に、以下のエラーになります。予想ですが、文 字コードの判別に失敗しているようです。 [java] java.nio.BufferOverflowException [java] at java.nio.charset.CoderResult.throwException(CoderResult.java:259) [java] at java.lang.StringCoding$CharsetSE.encode(StringCoding.java:343) [java] at java.lang.StringCoding.encode(StringCoding.java:374) [java] at java.lang.String.getBytes(String.java:573) [java] at javax.mail.internet.MimeUtility.doEncode(MimeUtility.java:643) [java] at javax.mail.internet.MimeUtility.encodeWord(MimeUtility.java:625) [java] at javax.mail.internet.MimeUtility.encodeText(MimeUtility.java:426) [java] at javax.mail.internet.MimeMessage.setSubject(MimeMessage.java:772) 2バイトコード2文字以上なら、問題なく送れます。 どのようにして、エラーを回避したらよいでしょうか? メールのエンコーディングは ISO-2022、DBのデータはEUC-JP、Javaのソース コードもEUC-JP です。
> これだとクラス変数と読めるが。じゃあクラス変数ではだめな理由は何? だからそのいまさらな考え方が下段だっての。「if(DEBUG) assert(test); で だめな理由は?」「enum一項目づつにクラス割り当てるのでだめな理由は?」 「多態化でだめな理由は?」「Object[] 渡しでだめな理由は?」 JDK のバージョンが上がるまでは「正論」だった論法な。 > メソッドを使い終わってもローカル変数が生きているのは気持ち悪くないか? 気持ち悪い論はただの主観だな。生きてて欲しいから「こういう機能はない ですか?」という話になってるんだろ。
ちなみに LISP などの関数型言語は、メソッド内に static 変数どころか、イ ンスタンス変数まで保持できる。こういう関数は、メソッドを一つしか持たな いオブジェクトのように振舞うことができる。これをclosure(クロージャ、 関数閉包)と呼ぶ。 こういうものに慣れていると、Java というのは、安全で分かりやすいけど、 不自由だと感じる。
>>575 >>570 の気持ち悪い論とかは確かに主観だな。
ただ、筋を通してemumなどは不要と主張するのならそれはそれでありだと思うし
それを「JDKに採用されたから必要(正義)→不要論は却下(言い訳)」
と決め付けるのもどうかと思われ。
>>577 まぁね。
無いものネタでヒートアップさせても何の結論も出ないのは明確だからここらへんで。
579 :
574 :2005/07/06(水) 15:58:59
すみません、訂正です。ソースの文字コードは MS932 でした。 呼び出し個所は、こう書いています。 mimeMessage.setSubject(title, "iso-2022-jp"); ここで title が2文字以上だと問題なく送れるのですが、1文字の2バイトコー ドだとエラーになってしまうのです。1バイトコードだと1文字でも問題ありま せん。
まずはJVMのバージョンさらせ
581 :
574 :2005/07/06(水) 16:15:28
SUN の J2SDK 1.4.2 です。
そのしただ
java version "1.4.2_03" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02) Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode) これで良いでしょうか?
03とはかなり古いな JIS変換で無限ループする有名なバグもちだ
585 :
574 :2005/07/06(水) 16:33:57
ぐああ、SDKのバグですか!恥ずかしながら知りませんでした。どうやって回 避したらよいでしょう?!
586 :
573 :2005/07/06(水) 16:52:08
インストールし直したら、 うまく行きました。 ありがとうございました。
587 :
574 :2005/07/06(水) 17:41:06
プロジェクトリーダの許可を貰って、JavaVM を1.4.2.08に上げました。 問題は起こらなくなりました。ありがとうございました。 それにしても、こんなことで半日潰してしまいました。お恥ずかしい限りです。
588 :
デフォルトの名無しさん :2005/07/06(水) 21:10:09
すみませんが、教えてください。 cp = getContentPane(); cp.add(menuBar, BorderLayout.NORTH); (この書き方で間違いないはずなんですが・・・) と書くと画面を最大にしないとメニューバーが現われません。 いろいろ試したのですが、どうしても初期画面に表示されません。 どなたかよろしくお願いします。
つ JFrame.setJMenuBar つ Frame.setMenuBar
>>578 俺も参加させてくれ!
クラス変数でなくインスタンス変数の可視性を
メソッドだけに制限したい場合は如何指定すればいいのか?!
というのはさておき
自分的に、可視性についてC#のをパクって欲しいのは
プロジェクトプライベートみたいなのだなぁ。
パッケージプライベートを整合性の最後の境界にするには
(整合性を保つのに必要なクラス一式を同じパッケージに入れるのは)、
結構きついので、ほとんどの場合
言語仕様外の約束事みたいなものが必要に思える。
ところで、あるフレームワークの拡張ポイントのために、
リスナーを表すインタフェースを実装する場合、かつ、
そのフレームワークからの呼び出しに限って
引数にnullを渡さないことが分かっている場合、
そのインタフェースのメソッドの実装(もちろんpublic)に
nullチェックは書く?書かない?
>>590 そのフレームワーク作った奴が信用ならなければ書く。
あるよ。Struts 程度しか使ったことないのか?
ああ、信頼できるかどうかにかかわらずやっとけという話なら失礼
596 :
デフォルトの名無しさん :2005/07/08(金) 00:21:28
597 :
デフォルトの名無しさん :2005/07/08(金) 00:42:19
sjisのファイルを読み込んでsjisで書き込むプログラムを教えてください。
>>596 java.util.Date d1 = new java.util.Date();
java.sql.Date d2 = new java.sql.Date(d1.getTime());
>>597 InnputStream in = null;.
OutputStream out = null;
try{
in = new FileInputStream("input.txt");
out = new FileOutputStream("output.txt");
byte[] buffer = new byte[1024];
while(true){
int len = in.read(buffer);
if(len < 0) break;
out.write(buffer, 0, len);
}
} finally {
try{ if(in != null) in.close(); } catch(IOException ex){ }
try{ if(out != null) out.close(); } catch(IOException ex){ }
}
>>596 java.sql.Date date = java.sql.Date.valueOf("2005-07-07");
Pocket PC を使い始めたので Java を使って何かプログラムでも書いてみようと考えています。 Pocket PC 上で動作させる Java 環境として 最も広く利用されているもの、あるいは、 オススメなものなど、ありましたらご教示ください。 J2ME CDC の参照実装は Linux 向けしか存在せず J2ME CLDC PDAP の実装も未公開なようなので J2ME CLDC MIDP ではじめてみようと考えています。 J2ME CLDC MIDP で開発を行う際の開発環境として 最も広く利用されているもの、あるいは、 オススメなものなど、ありましたらご教示ください。 その他、同分野に関する良著など、 ご存知でしたらご教示いただけると助かります。
603 :
デフォルトの名無しさん :2005/07/08(金) 19:07:22
604 :
デフォルトの名無しさん :2005/07/08(金) 20:04:59
ArrayList(item)に入ったデータをスレッドで取得・処理したいんですが、 public class A extends Thread { public void run() { while (item.getIterator().hasNext()) { String proc = (String) item.getIterator().next(); … } } } この方法以外に、もっとスマートな書き方はないでしょうか?
605 :
デフォルトの名無しさん :2005/07/08(金) 20:10:14
606 :
604 :2005/07/08(金) 20:17:59
Aのクラス利用者が Iterator iter = item.getIterator(); while (iter.hasNext()) { … このように定義されるのを避けたいのです。
イテレータで取得されるとまずいのか?ナニソレ
608 :
604 :2005/07/08(金) 20:40:36
itemには100件データが入ってるとして、Aのクラスはスレッド実行させ、子スレッドで順次nextを実行させたいのですが。
イテレータがいやならインデックスアクセスにすれば?
611 :
デフォルトの名無しさん :2005/07/09(土) 00:34:44
宣言を1行で済ませたいのですが class a{ int x int y a(int x, int y){} } と言うのは可能ですか? それとも a(int _x, int_y){ x=_x; y=_y; } としないとやばいですか?
class a { int x; int y; a(int x, int y) { this.x = x; this.y = y; } }
>>611 はどういう観点から1行にしたいとなったのだろうか
>613 ひょっとしてコンパイラがdでもなく古くて 実行数がバイトコードサイズに反映される環境なのかも
チョーやばいって感じ。 つーか、試してみればいいじゃん。
>>570 > method static な変数があったとして、それはクラス変数なの?ローカル変数なの?
クラス変数に決まってるだろ。変数のスコープがメソッド内になったからといって、クラス変数がローカル変数になるわけじゃない。
つーか、クラス変数とローカル変数の仕組みがわかっとらんとみた。
> これだとクラス変数と読めるが。じゃあクラス変数ではだめな理由は何?
クラス変数でだめなんていってない。クラス変数のスコープをあるメソッドだけに限定したいというだけだ。
> メソッドを使い終わってもローカル変数が生きているのは気持ち悪くないか?
だからクラス変数だといっとるだろが。
あのな、クラス変数とローカル変数はそもそもの仕組みが違うんだよ。クラス変数はヒープ領域、ローカル変数はスタック領域に取られる。それとスコープとの話は別なの。
クラス変数のスコープをメソッドローカルにするのは、技術的に十分可能なんだよ。ぜんぜん難しい話じゃない。
>>616 言いたいことはわかるがクラス変数である意味はないと思うぞ。
あるメソッドだけから見えるフィールドってもんがあってもいいだろうから。
>>617 もとの議論は、クラス変数をメソッド内で定義したいという話。インスタンス変数のことではない。
しかし
>あるメソッドだけから見えるフィールドってもんがあってもいいだろうから。
これはおもしろい発想だな。
>>616 ちょっと考えただけでもスコープが限定されてるので、
コンパイル時に確実な代入によるチェックがしにくくなる、
とかのデメリットがあるね。
> クラス変数のスコープをメソッドローカルにするのは、技術的に十分可能なんだよ。
それ以外の要素を全然考えてないよーな気もするが。
同期処理はするの? しないの? とか。
>>619 他にも名前の扱いについて
同名のクラスフィールドは許されるのか?
同名の局所変数、メソッドの引数は?
リフレクションでのアクセスの時の名前は? 等々。
>>616 なぜスコープが限定されると
>コンパイル時に確実な代入によるチェックがしにくくなる、
という結論になるのか。詳しい説明希望。
>それ以外の要素を全然考えてないよーな気もするが。
>同期処理はするの? しないの? とか。
スコープが限定されていること意外は、普通のクラス変数と同じでいいだろ。
今のままでもクラス変数は自動的に同期化されるわけじゃないだろ。それと同じで問題ない。
>同名のクラスフィールドは許されるのか?
>同名の局所変数、メソッドの引数は?
>リフレクションでのアクセスの時の名前は? 等々。
これらは全部、許すか許さないかのどちらかに決めればいいだけの話。
shadowingを許すなら何も警告しない、許さないならエラーをだす、それだけ。
心配ならshadowingをまったく許さないようにすればよい。
>>621 っつか、そこまで強固にアクセス権限設けたいなら
メソッドのためにクラス一個作ればいいんじゃね?
> これらは全部、
既存のものと違和感無く決められるか? という話。
で、そーゆー事を全く考えてないから
> 許すか許さないかのどちらかに決めればいいだけの話。
とかゆー無神経な言葉が出てくるんだと思われ。
> shadowingを許すなら
shadowing って何? hiding とか隠蔽とかの事か?
必ず出てくる 「現行できなくて問題ないから、お前が間違ってる」 論
>>623 考え無しのアイデアだね、って言われてるだけにみえるが。
そっか、間違ってるって言われてるように見えるのか。
んじゃ、やっぱり、どっか間違ってるんじゃないか?
>>622 そうだね。メソッド内で、他から見えないクラス変数持ちたいってのは
メソッドが状態持ちたいって事だから、
Java的にはそのためにクラス一つ作るのが正道だと思われ。
メソッド内のクラス変数を許したらメソッド内で他から見えないインスタンス変数持ちたいって要求も出てくるんだろうなぁ。
おお、なんか再燃してるしw
>>623 まったく、だからもうこの話はやめとこうって言ったのに。
assert や Boxing、可変引数が無かった頃、高説垂れて否定してた現状保守派を思いだすな。
この手のもしあったら話は、現行で問題ない、代替策が有る、じゃあ Java 使うな、といった
意味のない終わり方にしかならないから。
>>628 っつか、2ch で騒いでる時点で意味があるとは思えん。
意味のある事したいなら Sun のBBSとか、BugParade 行くとかすればいいじゃん。
>>629 同意。
2chでやってる時点で結論に関係なく意味がない終わり方しかしない。
>>622 毎回インスタンス生成したくない (元の話題だと正規表現をコンパイルしたくない) から
クラス変数を要求してんだけど、おまえ目の前の論議で思考停止してるだろ。
それに強固な要求を満たすなら、そのクラスは特定のメソッド内からのみ参照可能で
なければならないわけだが、メソッド内で定義した無名 inner クラス使ったところで
インスタンスは毎回作らなきゃならないだろ。
>>630 いや、彼は自分の説が支持されたら意味があるんじゃない?
一瞬でも良い気分になれる、とかさ。よくわからんけど。
___ . |(・∀・)| . | ̄ ̄ ̄ △ △l | __△|_.田 |△_____ |__|__門_|__|_____|_____
>>631 > 毎回インスタンス生成したくない (元の話題だと正規表現をコンパイルしたくない) から
その場合、static final なクラスフィールドとか、
final なインスタンスフィールド使えれば それほど不満は無いかな。
> メソッド内で定義した無名 inner クラス使ったところで
内部クラス(メンバクラスじゃないよ)では、
クラスフィールドは定義できなかったような?
| |彡ミ ) |'_、_ | |,_ノ`/ 莫迦により振り出しに戻る |...V |::)
>>631 > 毎回インスタンス生成したくない (元の話題だと正規表現をコンパイルしたくない) から
> クラス変数を要求してんだけど、おまえ目の前の論議で思考停止してるだろ。
ところで、なんでクラス変数じゃないと思考停止になるんだろ?
インスタンス生成時に与えられた正規表現で〜って場合も考えれば
インスタンスフィールドに関しても同じ要求があっても良いのでは?
>>636 良いだろ。それは否定しない。
思考停止は「スコープ限定したければクラス定義すれば?」に当てたもの。
>>637 読み出し専用の正規表現オブジェクトのスコープを、
そこまでして限定したいのか? ってのが良くわからんのだが。
>>637 普通スコープを限定したいのは読み書きする変数
読み書きする変数ってのは状態だから…… と考えたんだが、
そっちの方が思考停止しとらんか?
>>568 っつーか、enum とか可変長引数とかって否定されてたっけか?
個人的には enum は積極的支持してたけどなぁ。
>>638-639 ああ、Pattern は immutable だからスコープ広がっても問題ないだろーって
ところで停止してたわけか。何のためにスコープがあるか分かってるよな?
> と考えたんだが、
超後付臭い言い訳ありがとw
どうでもいいけど、ざっと流し読むと 「か?」とか「な?」 で終わる書き込み
(?は全角) が多いのが笑えるw
____ _ | (・∀・) | `)) | ̄ ̄ ̄ ̄ ´ ∧ <⌒> /⌒\ △ _________]皿皿[-∧-∧、 △l |\ /三三三三三三∧_/\_|,,|「|,,,|「|ミ^!、__△|_.田 | |△_ __| ̄田 ̄田 / ̄ ̄Π . ∩ |'|「|'''|「|||:ll;|____△|_.田 |△ |____ /__,|==/\=ハ, ̄ ̄|「| ̄ ̄ ̄ ̄|「| ̄ ̄| |__|__門_|__|_____|\_ /_| ロ ロ 「 ̄ ̄ ̄ | | 田 |「| 田 田 |「|[[[[||ll.|ロ ロ,/| l⌒l.l⌒l.| | |「| |「|ミミミミミミ
>>644 そういう1行レスはデフォでスルーするのが話を正しく進めるコツだよ。
て言っても、既に勝ち負けの話になってるから、行き着く先は知れてるけどな。
こうして「もしあったら」ネタはいつものように虚しい終わりを告げるのであった ↓次の質問
>>642 Pattern が immutable なだけじゃなくて、使い方も読み込み専用じゃん。
で、そこで思考停止しないなら
>>638-639 、状態ならクラスにするのが正道だと思うんだが。
>>648 反論のしようも無いと。もしくは時間稼ぎ?
粘着乙
>>646 まぁ、ネタ主が厨房だから仕方が無いといえば仕方が無い
言語仕様決める奴が見てると思われる BugParade やら Sun の掲示板行けと
言っても 2ch に来やがるし。で、叩かれたら無意味だったとか相手を非難するだけで
叩かれた部分を考えて もっと説得力のある案に とかそーゆー思考も無いみたいだしね
>>645 こーゆー話に勝ち負けがあるのかw
行き着く先を決めた奴が誰なのかは一目瞭然だなw
>>651 多分君の言うネタ主=
>>646 なんだけどな。
変数は必要最小限のスコープで使用できたほうが良いという話をしようとしたら、
いつの間にか現行仕様保守派に囲まれて BugParade 行けって話に誘導
されてたw
このスレも長いからもしもネタがどういう終わり方するかは大体分かってるんだけどな。
でも言語仕様超越してても何かわくわくするアイディアや考え方はないかな〜とか
見てるんだけど、現行以上の話できない奴ばかりで白けて終わりだね。まぁ当然か。
BugParade や Sun の掲示板行けって? 興味あるネタで雑談できれば良いからここ
なんだよw お前もそうだろー? で、まだ続けんの?
>>652 なんか分からんが必死なのは伝わった。
>>653 > このスレも長いからもしもネタがどういう終わり方するかは大体分かってるんだけどな。
いや、もしもネタだからじゃなくて、
考え無しにアイデア出しておいて、ちょっと叩かれたら叩いた奴が悪い、
みたいな反応するからだよ。
ちょっとぐらい叩かれても
>>568 とか
>>628 みたいな反応せずに
前向きに議論してたら支持してくれる奴とか援護してくれる奴が出てくると思うけどね。
>>654 だからもともとそんな話する気は無かったんだってばw
>>654 どっちが叩いたやつでどっちが叩かれたやつなんだ?
インスタンスメソッド内でクラス変数を定義するなんて、ごく普通の発想だと思うのだが。Cでも関数内でstatic変数できるし。
Javaコンパイラをちょっと改造すりゃすむだけだし、JVMにも何の影響も与えない。
それをむきになって否定する理由を探すやつらの頭がわからん。
そして、否定した理由が間違いだと指摘されたら、2chじゃなくてSunにいえと?あほか、自分の意見が否定されたからといって話をすりかるな。
>>655 えーと、要するに叩かれたかったのか?
それとも、
> でも言語仕様超越してても何かわくわくするアイディアや考え方はないかな〜とか
とか期待してたわけ?
> このスレも長いからもしもネタがどういう終わり方するかは大体分かってるんだけどな。
って言ってるのに?
>>656 > インスタンスメソッド内でクラス変数を定義するなんて、ごく普通の発想だと思うのだが。
少なくとも、今回の Pattern の例は不適切だね。
> 自分の意見が否定されたからといって
変数は状態。で、状態はインスタンスで保持するのが Java では正道。
これに対する反論がまったく無いんだけど。
> 話をすりかるな。
すりかえた覚えは無いよ。言語仕様変えて欲しいなら Sun に言えば良いだけ。
Sun やら JCP なら言語仕様変えられるんだから、少なくとも 2ch より話が早い。
>>656 > Javaコンパイラをちょっと改造すりゃすむだけだし、JVMにも何の影響も与えない。
本当に?
いや、それはオマエがその程度でしか考えてないって事にしかならんと思うが。
例えばインスタンスメソッドでクラス変数を定義する方法を
C言語の関数内の static な変数を模して短絡的に決めれば
>>636 みたいに
メソッドローカルなインスタンス変数を作ろうとするときに障害になる可能性もある。
> 少なくとも、今回の Pattern の例は不適切だね。
何が不適切? 「状態が変わらないか〜」ってのがその説明なら、不適切という
表現は間違いだな。
> 変数は状態。で、状態はインスタンスで保持するのが Java では正道。
static 変数の存在は否定ですか? 変数のスコープを短くするのは悪ですか?
反論が無いのは「状態をインスタンス変数で〜」なんて脱線してるのがお前だけだから。
>>659 名前のバッティングや隠蔽はタダの決め事でしかない。つーか、そんなん現状でも
あるだろ。何が問題だ?
>>660 > 何が不適切?
件の Pattern が特定のメソッド以外から見えてはいけない必要が説明しにくいから。
> static 変数の存在は否定ですか?
static なメンバ変数の大半は final で修飾された定数なんだけどね。
まぁ必要があれば使うけど、あんましオススメできないね。
>
>>659 > 名前のバッティングや隠蔽はタダの決め事でしかない。
>>659 は隠蔽の話なんかしてないと思うが?
663 :
654 :2005/07/09(土) 22:03:18
>>658 >少なくとも、今回の Pattern の例は不適切だね。
なにがどう不適切なのかさっぱりわからん。変化することのないオブジェクトをクラス変数として定義してるだけだが。
これをインスタンス変数にするほうが不適切。
>変数は状態。で、状態はインスタンスで保持するのが Java では正道。
>これに対する反論がまったく無いんだけど。
変数は値。値が状態を表すこともあるというだけ。今回の例では状態を表してるわけではない。
論点がずれていて、反論するどころか、読み飛ばしていた。ごめんな。
>言語仕様変えて欲しいなら Sun に言えば良いだけ。
言語仕様変えて欲しいというのは、658の勝手な解釈。
「言語仕様がこうなっているのはなんでだろうね」と話していただけ。なのになぜか「Sunに言えばいい」だって。
「郵政民営化って国民のためになるのかな」と話してたら、「文句あるんなら自分で選挙に立候補しろ」といわれた気分。
>> 何が不適切?
>件の Pattern が特定のメソッド以外から見えてはいけない必要が説明しにくいから。
それは不適切とは言わない。
>まぁ必要があれば使うけど、あんましオススメできないね。
で、そのスコープを限定できても良いのではという話をしてるわけだが? (インスタンス変数を含めても良い)
>
>>659 は隠蔽の話なんかしてないと思うが?
すまんが、お前の脳内でどういう話になってるのか分からない。
>>663 > 変化することのないオブジェクトをクラス変数として定義してるだけだが。
メソッドにスコープを限定する必要は?
Pattern は immutable だし、final にしとけば変更される必要も無いから。
> 今回の例では状態を表してるわけではない。
で、今回の例は上記により不適切なんだが。
> 「言語仕様がこうなっているのはなんでだろうね」と話していただけ。
そうは見えないんだが。
> 「文句あるんなら自分で選挙に立候補しろ」といわれた気分。
まぁ、文句あるんなら選挙で投票しろ、ぐらいかな。
選挙に立候補しろ、ぐらいの論調だったら「新しい言語作れ」って言うから。
>>665 >それは不適切とは言わない。
必要性が説明しにくい例が不適切じゃないとでも?
>すまんが、お前の脳内でどういう話になってるのか分からない。
相手を叩くためだけに反論するのを止めたら理解できると思うよ。
>>665 > それは不適切とは言わない。
いや、不適切だろ。
private static final Pattern pat = Pattern.compile("^\\s*$"); じゃいけないの?
って言われたらクラス内で別の箇所でも pat って名前を使いたい、ぐらいしか言えなくらなんか?
>>666 >メソッドにスコープを限定する必要は?
別のメソッドで変数名スペルミスしたときのバグになる。つまり意図しないところで使われて問題に
なることがある。つか、そんなもんスコープを限定する必要性理解してればすぐ分かるだろ。
>>669 > 別のメソッドで変数名スペルミスしたときのバグになる。
スコープ限定のコアな理由が隠蔽じゃなくてスペルミス防止なのかよ。
> 別のメソッドで変数名スペルミスしたときのバグになる。つまり意図しないところで使われて問題に > なることがある。つか、そんなもんスコープを限定する必要性理解してればすぐ分かるだろ。 オマエがスコープを限定する必要性をどう理解してるかが分かった うんうん、たしかにスペルミスは防止しないといけないねぇ
>>すまんが、お前の脳内でどういう話になってるのか分からない。
>相手を叩くためだけに反論するのを止めたら理解できると思うよ。
それはお前。そうでなければ変数名のバッティング以外で
>>659 の何が問題なのか、
お前の脳内問題を言ってみろ。
>別のメソッドで変数名スペルミスしたときのバグになる みたいな必要性しか主張できなくなるから、不適切なんだろーな
>>659 >本当に?
本当。Javaじゃなくてもいいから、コンパイラとVMを作ってみ。
中身がわかれば、スコープを限定したところでクラスファイルに影響を与えないことなんかすぐわかる。
>いや、それはオマエがその程度でしか考えてないって事にしかならんと思うが。
おまえがどのくらい考えてものをいってるのかしらんが、少なくともクラス変数とローカル変数の仕組みぐらいはわかってるんだろうな。
>例えばインスタンスメソッドでクラス変数を定義する方法を
>C言語の関数内の static な変数を模して短絡的に決めれば
>>636 みたいに
>メソッドローカルなインスタンス変数を作ろうとするときに障害になる可能性もある。
なにがどう障害になるのか、わかりやすく説明してくれ。
>>661 >件の Pattern が特定のメソッド以外から見えてはいけない必要が説明しにくいから。
はぁ?「あるメソッドでしか使わないからスコープをそのメソッドのみに限定する」、すげー簡単じゃん。
何が説明しにくいの?
>static なメンバ変数の大半は final で修飾された定数なんだけどね。
>まぁ必要があれば使うけど、あんましオススメできないね。
そりゃ、おまえがそういう使い方しかしてないってだけじゃん。
Singletonパターンとかでクラス変数はしょっちゅうつかうけどな。
このスレって、いつから「もしあったら」ネタで雑談するスレになったの? 質問スレは重複してるし面白いネタなら歓迎だが、つまんないからいい加減終了してほしいのだが。 #反応してる側が相手にするのやめないと終わらんから。頼むよorz
おいおい、スペルミスは例の一つだ。その後にブラックボックス化になるよう書いてんだろ。 何どうでもいいところ突っ込んでんだ?
>>672 単純にメソッド内で
static 型名 識別子 <= 初期化子>;
と書いたらクラス変数になるという仕様にした場合、
メソッドローカルなインスタンス変数を追加しようとした場合はどーすんの?
新しく local みたいな単語を予約語にするにしても、
既に static でクラス変数になるという仕様があると弱くなるよね。
メソッドローカルなインスタンス変数とメソッドローカルなクラス変数の
一貫性もとりにくいし。
>>674 > Singletonパターンとかでクラス変数はしょっちゅうつかうけどな。
Singleton で使うときって、普通は final で修飾しないか?
>Javaじゃなくてもいいから、コンパイラとVMを作ってみ。 実装できるってレベルと仕様の設計ができるってレベルは違うのよね、悲しいけど
>あるメソッドでしか使わないからスコープをそのメソッドのみに限定する
例としては不適切だな。
>>668 みたいに言われたらおわりだし。
> メソッドローカルなインスタンス変数を追加しようとした場合はどーすんの? 質問に質問で返すか、しかも結局問題は名前のバッティングかよw 言語のセマンティクス変わる事になるからキーワード追加だろうが何でもできるだろ。 > 既に static でクラス変数になるという仕様があると弱くなるよね。 何が弱くなるの? 一貫性って名前の? 脳内問題とかいわれたくなかったら第三者に伝わる 言葉でおながいしますよ。
>おいおい、スペルミスは例の一つだ。 それしか考え付かなかったんでしょ。 Pattern の例でブラックボックスにする価値ってどこにあるのよ?
>しかも結局問題は名前のバッティングかよw 名前っつーか、文法のバッティングなんだけどね >言語のセマンティクス変わる事になるからキーワード追加だろうが何でもできるだろ 無駄にキーワード追加して言語が汚くなっても構わないのか
> 言語のセマンティクス変わる事になるからキーワード追加だろうが何でもできるだろ。 assert追加した時の悲劇を繰り返しても良い、と?
>>680 何で Java では C のようにメソッドの最初でローカル変数宣言するのではなく、本当に
必要なところで宣言するか知ってる?
それ以前に何でスコープが必要か理解してる? 入門書レベルでいいからさ。
>>685 スペルミスしないためでしょw
っつか、Pattern の例だと immutable だし、
pat 自体はクラス内で隠蔽できるし final つけられるから
そーゆー解釈にしかならんが。
>>677 >メソッドローカルなインスタンス変数を追加しようとした場合はどーすんの?
知るかよ、そんなの。「メソッドローカルなインスタンス変数」を追加したいのはおまえなんだから、おまえが考えろ。
>新しく local みたいな単語を予約語にするにしても、
>既に static でクラス変数になるという仕様があると弱くなるよね。
なにがどう弱くなるのかさっぱりわからん。
>メソッドローカルなインスタンス変数とメソッドローカルなクラス変数の
>一貫性もとりにくいし。
どういう一貫性だよ。おれはおまえの頭の中覗けるわけじゃないんだから、わかるようにかいてくれ。
>>678 >Singleton で使うときって、普通は final で修飾しないか?
finalつける方法もあるし、つけない方法もあるだろ。
インスタンスオブジェクトの生成が重いときは、必要になるまで生成しないほうがよい。
そのときはfinalにしない。
今度はキーワード追加に食いついてきたか。 例じゃなく本質的なところに来いよ。自信ないのか?
>>687 > 知るかよ、そんなの。「メソッドローカルなインスタンス変数」を追加したいのはおまえなんだから、おまえが考えろ。
だから、
>>659 は
>>636 がそーゆー事を考えてない案だって言ったわけ。おわかり?
>>688 本質的なところね。何で Sun に直接言わないの?
>>686 だから、必要以上のスコープは弊害しか起きないってまだ認めたくないのか?
これは immutable な Pattern に特化した話も含んでる。
>>680 >668 みたいに言われたらおわりだし。
private static final Pattern pat = Pattern.compile("^\\s*$"); のことか?
finalにするかどうかが問題じゃないだろ。「スコープを限定したい」というのがもともとの話じゃないのか。
なぜfinalにしたらおわりなのか。
>>690 それは本質的すぎ。それ言うと続かなくなるよ。
>>691 例として不適切だということを説明しただけだが。
>>692 > なぜfinalにしたらおわりなのか。
弊害がスペルミスによる誤用ぐらいしかないから。
>だから、
>>659 は
>>636 がそーゆー事を考えてない案だって言ったわけ。おわかり?
考える必要のないことを出してくるなよ。
おまえのいってるのは、話を否定するためだけに無理やり別の要求をだしてるの。おわかり?
>>690 Java 言語仕様の話だけしてるんじゃないんだけど、莫迦ですか?
>> なぜfinalにしたらおわりなのか。 >弊害がスペルミスによる誤用ぐらいしかないから。 おまえ実務経験浅そうだな。
>>688 メソッド内にスコープを限定したい変数の例を出してこないと説得力ないよ。
スコープの話なら、C++ の protected みたく、パッケージ内では使用不可だけど、
継承したクラスだけが使用できるアクセス指定子があっても良い訳だし、
あっても良いって話であれば、何でもあって良いわけだから。
特に これはあった方が良いって言えるだけの材料はあった方が良いと思うけどね。
>弊害がスペルミスによる誤用ぐらいしかないから。 はあ?弊害があるからスコープを限定したい、っていってるわけじゃないだろ。 この変数はこのスコープでしか使わない、ということを構文的に明示するために、スコープを限定するんじゃない。
>Java 言語仕様の話だけしてるんじゃないんだけど じゃ、なんでJavaスレでやってるんだよw
>>701 Java の話が大きく絡んでるから。莫迦?
>メソッド内にスコープを限定したい変数の例を出してこないと説得力ないよ。 オレ的には最初のPatternの例で十分説得力あるんだが。
>>702 じゃ、なんで Sun に言わないわけ?
> メソッド内にスコープを限定したい変数の例を出してこないと説得力ないよ。 それが Pattern の話だろ。 だが static final 宣言すれば問題ない ↓ 不必要にスコープを大きくするのは不適切 ↓ 例出せよ の無限輪廻地獄。
>>704 ループさせて楽しいか? そうか楽しいか。
>>703 だから、Pattern の例は immutable だし、
final にすれば変更不能にできるし、private にすればクラス内に隠蔽できる。
仮にメソッド内ローカルなクラス変数ができても
スペルミスの対策ぐらいにしかならない、って意味で適切な例ではない。
あぁ、後は発案者の精神的安定には寄与するかもしれない。
>>705 じゃ、話をすすめようか。
不必要にスコープが大きくなっているのは特定のメソッドでしか使用しないクラス変数だけじゃない。
>>699 みたいに、パッケージ内では使用されたくないけど、継承先では使用して欲しいって場合もある。
メソッド内ローカルのクラス変数だけが特別に必要な理由は?
>>706 まぁ、ループさせてんのは適切な例出さない方だしねぇ。
楽しいんじゃないの?たぶん。
> スペルミスの対策ぐらいにしかならない、って意味で適切な例ではない。 誤用が防げるなら十分有用。 お前の言ってることが正しければ、Java には C/C++ のように boolean 型はいらないということになる。
>>699 クラス変数の使い方が想像できない
>>699 のために。
// Singletonパターン
public class VeryLargeObject {
private static VeryLargeObject instance = null;
public synchronized VeryLargeObject getInstance() {
if (instance == null) {
instance = new VeryLargeObject();
}
return instance;
}
}
// インスタンスを生成した数を記録
public class Foo {
private static count;
public Foo() {
count++;
}
public static getCount() { return count; }
}
どちらの例でも、クラス変数はある特定のメソッドでしか使われてない。
>パッケージ内では使用されたくないけど、継承先では使用して欲しいって場合もある。 オマエこそ例をだせよ。
>>711 > public synchronized VeryLargeObject getInstance() {
static 忘れてるよw
> メソッド内ローカルのクラス変数だけが特別に必要な理由は? だからそのメソッド内でしか使用しないクラス変数を文法上で明記することだと言ってんのに。
>>712 FilterInputStream みたいなものを作る場合、protected InputStream in は継承先からは使用されても良いが
同パッケージ内からは使用できなくてもかまわない。
>>714 Singleton の場合ってメソッドローカルに出来る事による利点がそれほどあるとは思えんが。
後半の場合は二つのメソッドから使用されてるので
>>636 みたいな安易な方法じゃ無理。
>だから、Pattern の例は immutable だし、 >final にすれば変更不能にできるし、private にすればクラス内に隠蔽できる。 immutableとかfinalだとかprivateとかはどれも関係ない。なんでそんな関係ないところをだしてくるの? 今議論になっているのは、変数のスコープを限定したいということ。 あるクラス変数が特定のメソッドでしか使われないことを、ソースコード上で構文として明示的に示したい。 メソッド内でクラス変数が定義できたらそれが実現できるよね、という話。 なんで変更不可とかクラス内に隠蔽とかでてくるわけ?
>>717 > なんで変更不可とかクラス内に隠蔽とかでてくるわけ?
例が不適切だから。
どんな例をだしても、 >利点がそれほどあるとは思えんが。 で否定されるYokannヨカーン
720 :
デフォルトの名無しさん :2005/07/09(土) 23:08:48
tomcatのmanagerで「(IPアドレス)/」のコンテキストパス(デフォルトではROOTのやつ)に ウェブアプリを配置したいのですが、どうしたらいいのですか?
>>717 単に話の意図を汲み取りきれてないからだろ。Java に限らずスコープを限定する事が推奨されてるのは
なぜかちょっと調べれば分かると思うんだが、かたくなに「immutable を static final 宣言すれば問題ない」
「利点があるとは思えないので不適切」という御主張。
>>710 影響範囲が違うよ、boolean はあらゆるところで使われるけど、
Pattern pat の場合はクラス内で気をつければよいだけだからね。
>>723 スコープを限定するのは良いことだが、
細かいスコープを限定するために修飾子を沢山作ったりしたら際限がない。
あれば便利だが、なくても構わん、という程度ではないか?
>>727 すでにstaticというキーワードがあるんだが。
>>727 あれば便利だし、実現するのも簡単、という話ではないか?
>>724 いや、そういう話ではなくてさ。プログラマの誤用を防ぐ方向に考える事の有用性のこと。
boolean 導入は型を明示して C/C++ のような条件分内の代入などの誤用を防いでいる。
スコープもしかり。明示できること = 誤用の防止について「注意すれば良い」などと
考えてる奴はかなり後退的。
>>732 で、そっちが知ったことでないなら、
メソッド内ローカルなクラス変数なんて知ったことか。
> 明示できること = 誤用の防止について「注意すれば良い」などと いや、あらゆる事を明示していたら際限がない。 個人的には好きだった adding generics のどっかのバージョンにあった 読み込み専用な配列とかも却下されたみたいだし。まぁ、文法はアレだったけど。
>読み込み専用な配列 あったあった。type[+] identifier とかやるんだっけ?
プログラマが入れるバグなんて誤用 (無知・誤解含む) 以外の何があるのかと。
>>730 だからそんな「将来の拡張」を話してるのはおまえだけ。しかも話を捻じ曲げるために持ち出している。
そもそも、メソッド内でstaticが使える・使えないという話と、「メソッドローカルなインスタンス変数」の話は関係ないだろ。
メソッド内でstaticが使えるようになったら、「メソッドローカルなインスタンス変数」が実現しにくくなるのか?
メソッド内でstaticが使えなければ、「メソッドローカルなインスタンス変数」が実現できるのか?
メソッド内でstaticが使えようが使えまいが、「メソッドローカルなインスタンス変数」の実現性には影響しない。
それより
>>677 の
>既に static でクラス変数になるという仕様があると弱くなるよね。
何が弱くなるのかすげー気になる。
>>734 件のクラス変数より読み込み専用の配列の方が欲しいかも。
まあ少なくとも、メソッドローカルなクラス変数が簡単に実現できるというのはわかる。すでに予約語があるしな。 メソッドローカルなインスタンス変数は新しい予約語を導入しないと難しいんじゃないか。
いいかげんにしろ
>>720 みたいな質問が埋もれる
TomcatがのデフォでROOT使ってるからそれを差し替えるだけでいいんじゃないかな
>>739 予約語があるっつーよか C言語の文法を真似すれば、だね。
goto のような予約されてるが使われてないキーワードがいくつかあったはずだが、 使えそうなものはなかったなか。const も予約語だったな。
>>739 そう、その難しいことをどこからともなく持ち出してきて、簡単なほうも無理やり否定しようとしているのが
>>677
>>740 むしろさっさと埋めて合流したほうが良いんだが。
>>743 はぁ? スコープを限定できるのは善なんだろ?
だったら難しいも簡単もなくスコープは限定できるべきだろ?
>>743 言語仕様変えるのって簡単なんだ
だったら Sun に言って変えて貰えば
なんか話をそらしたい人がいる
>>747 で、そんなん言ってたらメソッドローカルのクラス変数の時点で際限がない。
>スコープを限定できるのは善なんだろ?
そうだよ。だから簡単なものは実現してほしいねといっている。実現が難しいものはあとまわしにしてもいいし、
そもそもメソッドローカルクラス変数ができたからといって、なぜそれがメソッドローカルインスタンス変数の妨げになるのかわからん。
>>677 の「弱くなる」がキーワードみたいなのだが、説明してくれないし。
>>749 いや、C言語で既知の方法で実装できそうだから、とっととやれって話じゃないの?
>>750 > そもそもメソッドローカルクラス変数ができたからといって、なぜそれがメソッドローカルインスタンス変数の妨げになるのかわからん。
メソッドローカルのクラス変数の宣言に static 以外のキーワード使いたくなるかもしれないから。
>static 以外のキーワード使いたくなるかもしれないから。 はーい先生、質問があります。 質問1. 使いたいのはどんなキーワードでしょうか。 質問2. そして、staticじゃいけない理由は何でしょうか。 質問3. static以外のキーワードを使ったとして、メソッドローカルインスタンス変数の実現と何の関係があるんでしょうか。 つーか、使いたくなる「かもしれない」なんてことを理由にするとは、よほどお困りと見える。
> 使いたいのはどんなキーワードでしょうか。 local とか出てなかったっけ? > そして、staticじゃいけない理由は何でしょうか。 static でメソッドローカルのクラス変数にするんでしょ? > static以外のキーワードを使ったとして、メソッドローカルインスタンス変数の実現と何の関係があるんでしょうか。 メソッドローカルインスタンス変数とメソッドローカルクラス変数で一貫性が無くなる。
そんなに欲しいならなんで Sun に直訴しないで 2ch で騒いでるの?
際限がないって、メソッドローカルなクラス変数を特定のクラスにのみ公開したい とか、そんなこと言ってるの? クラス変数は public > protected > package private > private で隠蔽性を確保してる。 利用できるスコープもしかり。メソッドローカルなクラス変数は private より狭いスコープに なるだけだから、影響範囲が限定的になるだけで開発側としての副作用は… 別に思い つかないな。 この順序性というか構造を崩すような無理やりなスコープでなければ「際限が無い」ってことはないだろ。
>>754 よくよめ。
>メソッドローカルのクラス変数の宣言に static 以外のキーワード使いたくなるかもしれないから。
メソッドローカルのインスタンス変数についてじゃない。
メソッドローカルのクラス変数にstatic以外を使いたいんだと。
>>757 > この順序性というか構造を崩すような無理やりなスコープでなければ「際限が無い」ってことはないだろ。
ありとあらゆるものを明示的に宣言したら際限がない。
具体的には、
>>711 の後半のパターンとか。
> 開発側としての副作用は… 別に思いつかないな。
staic の多義性の問題とか出てくるかもね。
今でも複数の意味に使われてるし。
>>755 いや、実現性の話も出てるが『スコープ限定は不適切』論が出てるから騒いでるんだろ。
>>758 >メソッドローカルインスタンス変数とメソッドローカルクラス変数で一貫性が無くなる。
から、メソッドローカルのクラス変数で static 以外のキーワードを使いたいんだろ。
メソッドローカルクラス変数とメソッドローカルインスタンス変数で同じキーワード使いたいんじゃないの?
>>760 誰が『スコープ限定は不適切』なんていったんだ?
>staic の多義性の問題とか出てくるかもね。 また新しい理由を考えたようだな。自分を守るのに必死な759がんばれ。 >今でも複数の意味に使われてるし。 Javaで複数の意味に使われてるっけ。Cではそうだけど。
『例が不適切』と言っていたのが、 いつの間にか『スコープ限定は不適切』になってるのは?
>>759 文法上、「節」になってるのは クラス > メソッド (>メソッド内のブロック) の順序だから、
2つ以上のメソッドを跨ぐスコープを持つ変数ってのはクラス変数にしかなり得ないな。
順序性とか構造と言ったのはそういうこと。
>>765 え? Java では局所クラスやら無名クラスがあるから、
2つ以上のメソッドを跨ぐスコープの局所変数ってできるよ?
あと、クラス変数だけじゃなくてインスタンス変数もね。
言葉っつらに反応する奴多数。
>>766 んー、30 秒だけ考えてみたがどういうことか分からん。final 宣言したローカル変数が
無名 innter クラスのメソッドから見えるという話をしてるのか?
>言葉っつらに反応する奴多数。 反応されるだけの間違いをしてると思うが。
>>768 確かにそうだが、俺が言いたいこととはちょっと違うかな。
>>769 『不適切』で茶化しただけだがw
素直に『スコープ限定は不要』論、と言ったほうが良かったようだな、これは失敗。
シングルトン・ラブなオレとしては、メソッドローカルなクラス変数は魅力的に思える。
>>770 > 素直に『スコープ限定は不要』論、と言ったほうが良かったようだな、これは失敗。
いや、メソッドローカルのクラス変数だけ特別扱いしてスコープ限定する意味あるの? って主張してるんだが。
つまり、特定の一つのメソッドでしか使わないクラス変数ってそんなに多いか?
個人的には
>>699 みたいな継承オンリーのスコープのが欲しいと思う回数が多い。
>>770 なんだ、メソッドローカルのクラス変数が欲しい、じゃなくて
スコープ限定=善、それを否定する奴は悪になってたのか。
>>771 個人的にはシングルトンだったらメソッドローカルのクラス変数みたいな小手先の解決策取らんで
singleton とかのキーワード付けてクラス宣言する、みたいにした方が良いような気がする。
>>772 意味があるとずっと主張してるんだが。
例をあげると、「それは不適切」とかなんとかきってすてるし。
しかもなぜ不適切かというと「理由として弱い」だとさ。
結局、「おれには必要ないから却下、おれが必要な継承オンリーのスコープが正義」というのが本音だろ。
>>772 多いよ。元の話の Pattern のような構築に時間がかかるが不変なインスタンス、
getInstance() しかない Singleton、共有不要なメソッド内の定数、メソッド内でしか
使用しない定数テーブルや何かの判定用の定数Setもそう。
> スコープ限定=善、それを否定する奴は悪になってたのか。 悪で無い理由は? 「例が不適切」だから?w
>>775 > 共有不要なメソッド内の定数、メソッド内でしか
> 使用しない定数テーブルや何かの判定用の定数Set
定数でメソッド内に限定する意味あるの?
>>777 悪でないとは言ってないよ。っつか、誰もんな事言ってないし。
>>775 > 例をあげると、「それは不適切」とかなんとかきってすてるし。
少なくとも、Pattern は不適切だろ。
切って捨てられても文句は言えない。
> しかもなぜ不適切かというと「理由として弱い」だとさ。
そーゆー時に「理由として弱い」なんて言ったっけか?
>>780 メソッドローカルのクラス変数は必要ない。
>定数でメソッド内に限定する意味あるの? そのメソッドでしか利用しないなら、限定する意味ありありじゃん。わかっていってるのかな?
>>783 定数でない変数よりは限定する必要は少ないよね?
もちろんわかってるよね?
>>781 ちょっとまて、なんであの例が不適切なんだ?
>>785 だ・か・ら、スコープ限定のメリットが定数でない変数やら可変オブジェクトと比べて少ないから。
>>781 > 件の Pattern が特定のメソッド以外から見えてはいけない必要が説明しにくいから。
おまえは「説明しにくい」という感想しか言ってないな。
>>674 はスルーか?
> そのメソッドでしか利用しないなら、限定する意味ありありじゃん。わかっていってるのかな? スコープ以外は何も見てないんだろ。
>>787 「理由として弱い」で検索しても出てこないわけだ。
あとね、感想じゃないよ。
>>789 だってループさせるように誘導するんだもん。
>>786 確かに immutable ならメリットは少ないな。
お前が Pattern の話を持ち出してスコープから話題をそらしたかったのは良く分かった。
>だ・か・ら、スコープ限定のメリットが定数でない変数やら可変オブジェクトと比べて少ないから。 「オレ様にとってメリットが少ないから」宣言キター
今度は定数定義で話題そらしですか。 荒探しに忙しそうですね。
>>790 で、
>>674 はスルーか?
>
>>661 >>件の Pattern が特定のメソッド以外から見えてはいけない必要が説明しにくいから。
>はぁ?「あるメソッドでしか使わないからスコープをそのメソッドのみに限定する」、すげー簡単じゃん。
>何が説明しにくいの?
>>793 > 確かに immutable ならメリットは少ないな。
でしょ。で、
>>776 みたいにそーゆー用途がほとんどみたいじゃん。
> お前が Pattern の話を持ち出してスコープから話題をそらしたかったのは良く分かった。
いや、話題をそらしたわけじゃないよ。スコープ全般の話なんかしてないから。
メソッドローカルクラス変数は導入するメリットが少ない。
>>776 みたいな例ばかりならば。
>>716 >Singleton の場合ってメソッドローカルに出来る事による利点がそれほどあるとは思えんが。
>>795 いや、それは Pattern の例が不適切だと言った時からの主張なんだが。
伝わってなかったんならゴメンね。
800 :
デフォルトの名無しさん :2005/07/10(日) 01:07:58
public static String gets(){ try{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String input = new String(); input = br.readLine(); isr.close(); return input; } catch(Exception e){ System.out.println("受け付けられない文字です。指定の文字を入力してください。" + e ); return "error"; } } と言うメソッドを作って、mainで例えば、 String s1 = Get.gets(); String s2 = Get.gets(); とすると、 受け付けられない文字です。指定の文字を入力してください。java.io.IOException: Str eam closed と、例外処理が起こってしまうのは何故でしょう? また、どう直せばいいのでしょうか? お願いします。
> いや、話題をそらしたわけじゃないよ。スコープ全般の話なんかしてないから。 逃避宣言キタ━━━━(゚∀゚)━━━━ッ!!
また定数とかimmutableとかの話かよ。それとスコープの話は関係ない。 変数のスコープを関係ある場所にだけ限定したいというのが、なんでそんなにおかしいんだ? 「メリットが少ない」ってのはおまえの主観だろ。おれの主観で言うと、継承のスコープがなんたらかんたらのほうにはまったくメリットを感じない。
>>798 Singleton のインスタンスを保持してる変数を誤用するとか、
名前が被って煩わしいってケースがそんなに多いとは思えないし。
スコープ限定できてもスコープ限定できる以上の意味がほとんど無いと思うけど。
スコープを限定することに意義があるってんなら話は別だけど。
> メソッドローカルクラス変数は導入するメリットが少ない。
>
>>776 みたいな例ばかりならば。
だから immutable であればスコープは問題ないというような主張をしてるのは
幸せ回路持ったお前だけだっての。
>>801 スコープ全般の話をしてたつもりの奴がいるのか
806 :
デフォルトの名無しさん :2005/07/10(日) 01:11:46
>>599 さん
ありがとうございます。
sjisのファイルを読み込んでsjisで書き込むプログラムを教えてください。
なんですが、getbyteを使ったプログラムを教えていただけませんか?
>>804 だから、immutable だったり定数だったりするなら、
そうでない変数よりスコープ限定するメリットが少ないって言ってるの。
>>805 具合が悪くなって immutable に逃げた奴ならいるがな。
> そうでない変数よりスコープ限定するメリットが少ないって言ってるの。 それはお前の「感想」だろ。
810 :
デフォルトの名無しさん :2005/07/10(日) 01:13:53
<!-- // Begin Current Moon Phase HTML (c) CalculatorCat.com // --><script language="JavaScript" type="text/javascript"> var ccm_cfg = { n:'1', pof:'1', dt:'1', tc:'#ffffff', pth:'' } </script>
<table width="140" bgcolor="#000000" style="background-color:bgcolor="#000000" " cellpadding="0" cellspacing="3" border="0"><tr>
<td align="center" style="border: 1px solid #AFB2D8;color:#ffffff;padding-top:5px;padding-bottom:5px;" bgcolor="#000000"><font face="arial,verdana,sans-serif" size="1" color="#ffffff">
<span style="font-size:10px;font-family:arial,verdana,sans-serif;color:#ffffff">CURRENT MOON<br /><script language="JavaScript" type="text/javascript" src="
http://www.calculatorcat.com/cs/mm/ccm_b.js ">
</script><script language="JavaScript" type="text/javascript" src="
http://www.calculatorcat.com/cs/mm/ccm_v.js "></script><span style="display:block;padding-top:5px">
<a href="
http://www.calculatorcat.com/moon_phases/moon_phases.phtml " target="cc_moon_ph" style="font-size:10px;font-family:arial,verdana,sans-serif;color:#777777;text-decoration:underline;background:#000000;border:none;">
moon phase</a></span></span></font></td></tr></table><!-- // end moon phase HTML // -->
すいません。このスクリプトを携帯でも
閲覧できるようにしたいのですがどうすればいいですか?
>>810 携帯で JavaScript は動きません。
>>800 > と、例外処理が起こってしまうのは何故でしょう?
isr.close() してるから。
> また、どう直せばいいのでしょうか?
isr.close() しないようにすれば例外は出なくなるけど、
正常に動作させたいなら、BufferedReader 使わないで
改行記号まで読み込むようにするとかの根本的に直さないと無理。
>>807 Singletonでつかうクラス変数はimmutableでもないし定数でもないんだが。
「俺は初めからそんな話はしてなかった」 ← 意地っ張り根性丸出し
>>808 なんだ、本当にスコープ全般の話のつもりだった奴がいるのか。
なるほど、Pattern が不適切な例だって言った意味が通じてないわけだ。
>>815 じゃあ反対派は2人か。
おれはメソッド内にスコープ限定できたらうれしいに一票。
ああそうか、じゃあ無意味だな。
>>817 旗色が悪くなってしまってそっちに話題をそらしたいのはよく分かるよ。w
>>814 Singleton は便宜上 final で修飾されてないだけだと思うが、
2つ以上のインスタンスが生成されても良いわけ?
Singleton なら private だろうし、事実上定数だよね?
>>824 なに顔真っ赤にしてリロードボタン押してんのさwww
で、繰り返すとSingletonでつかうクラス変数はimmutableでもないし定数でもないんだけど、これじゃだめ? immutableでも定数でもなくて、あるメソッドからしか使わないクラス変数なんてしょっちゅうあるんだけど。
> immutableでも定数でもなくて、あるメソッドからしか使わないクラス変数なんてしょっちゅうあるんだけど。 俺は それほど無いんだけど。
>>823 便宜上でもなんでもないよ。
>>711 のように、大きいオブジェクトは必要になるまで作らないようにするから、そのときはfinalなんてつけない。
>>831 829 ではないが、影響範囲って知ってるか? なぜ必要以上にスコープを広げないか分かってる?
>>800 >と、例外処理が起こってしまうのは何故でしょう?
get() メソッド内で新しい InputStream を open していないのに、
>isr.close();
してしまっているからです。
「System.in」(標準入力)はあらかじめ用意されている InputStream で、
>InputStreamReader isr = new InputStreamReader(System.in);
では、これを、新しく作る InputStreamReader に割り当てているだけです。
従って、
>isr.close();
とすると、System.in も close されてしまい、二回目の呼び出しでは、
既に close() されている System.in を渡して、
>InputStreamReader isr = new InputStreamReader(System.in);
を実行することになるので、これを使った、
>input = br.readLine();
で、java.io.IOException が投げられるのです。
>また、どう直せばいいのでしょうか?
>isr.close();
を消すのがベストだと思います。
>>832 影響範囲っても Singleton ならクラス内でしょーが。
スコープ限定するだけが目的なら話は別だけど、
スコープ限定出来る事によるメリットが少ないって言ってるんだよ。
Singleton なら変数名も特徴的なの使うだろうし。
>>833 isr.close() を消しただけだと、
貼り付けとかしたときに BufferedReader でバッファリングした分が全部捨てられる可能性があるよ。
まぁ、学校の宿題で簡単なチェックを通れば良いってんならそれでも良いかもしれんが。
結局スコープ全般の話してんじゃんw
なんか「自分がクラス変数使ってないから必要ない」というスタンスだな。 Singletonパターンじゃなくても、それに近いことはしょっちゅうあるぞ。 /* ページ遷移を表すテーブル */ private static Map pageTable = null; // ← これはメソッド内に閉じ込めたい /* pageTableを参照して、次のページを表す文字列を返す */ public String getNextPage(String currentPage) { if (pageTable == null) { synchronized(this) { if (pageTable == null) { // 設定ファイルを読み込んで、pageTableを設定する。 pageTable = new HashMap(); /* 省略 */ } } } String nextPage = (String)pageTable.get(currentPage); return nextPage; } 「メリットが少ない」っていってるが、それはおまえの主観だって。
>>837 どうも、スコープ全般の話に持ち込みたい人がいるみたいで。
他人を散々叩いてきたから、自分が優位に立たないと我慢が出来ないんでしょ。
840 :
800 :2005/07/10(日) 01:41:48
>>813 >>833 ありがとうございましたお。
isr.close()を削除する方向で行きたいと思います。
>>839 いや、旗色悪くなったから逃げたがってる奴がいるだけにしか見えないが?
こういうのとかも private static final Set ADMIN_PERM = new HashSet(); static{ ADMIN_PERM.add("001"); ADMIN_PERM.add("002"); ADMIN_PERM.add("004"); }; public boolean isAdmin(){ return ADMIN_PERM.contains(userID); // ← ここでしか使わない }
>>838 > 「メリットが少ない」っていってるが、それはおまえの主観だって。
いや、
>>793 も同意してるね。
主観だって決め付けるなら、実質定数とか immutable なオブジェクトを
メソッドローカルなクラス変数にする事に客観的にどんなメリットがあるのか出してくれ。
スコープ限定出来る事に意義がある以外に。
>>843 それ、immutable じゃん。メソッドローカル云々言う前に
Collections.unmodifiableSet(Set) した方が良いと思うが。
正規表現のPatternはしょっちゅう使うから、メソッド内でstaticとして定義できるとたしかにうれしいな。 /* これはちょっと気持ち悪い */ private static final Pattern pat1 = Pattern.compile(/.../); private static final Pattern pat2 = Pattern.compile(/.../); private static final Pattern pat3 = Pattern.compile(/.../); public void foo(String str) { Matcher m; = pat1.matcher(str); if ((m = pat1.matcher(str)).find()) { .... return; } if ((m = pat2.matcher(str)).find()) { .... return; } if ((m = pat3.matcher(str)).find()) { .... return; } return null; }
>>846 なんだ、結局
> /* これはちょっと気持ち悪い */
を解消したいだけか……
848 :
793 :2005/07/10(日) 01:51:48
>>844 悪いが、同意したのは「immutable なインスタンスならそうで無いものに
比べてメソッドローカルなクラス変数にするメリットが少ない」ってのだ。
おまえの不要論に同意したわけではない。
散々言ってるんだが、immutable やら定数であれば そうでない変数に比べてスコープを限定するメリットが少ないってわかってるよね?
>>849 おまえが immutable に話題を持ってゆきたい理由なら分かるな。
>>848 > 「immutable なインスタンスならそうで無いものに
immutable なインスタンスや、定数ね。
今のところ そーゆー例しか出てないような気がするが。
>>850 おまえがスコープ全般に話題を持ってゆきたい理由も分かるけど。
>>849 おれはコードがすっきりしてわかりやすくなるだけですごくうれしいんだけど。
メリットが少ないっていう理由をもっと説明してくれ。
>>853 > メリットが少ないっていう理由をもっと説明してくれ。
既に説明したが。
逆に言うと、メリットは書いてる人間の自己満足ぐらいしかないわけだよね?
>>851 はいはい
private static int counter = 0;
public void foo(){
counter ++;
if(counter >= 100){
// アクセス数多すぎ
return;
}
try{
// なんかの処理
} finally {
counter --;
}
}
とか
>>842 >基本的には
>>711 の Singleton と同じなんですけど。
そのとおりだけど。だから「それに近い」と書いたんだが。
immutableでもないし定数でもない例として出したつもりだが、これじゃだめなのか?
>>847 明確なデメリットがあるなら話は別だが、そうでないなら
「ちょっと気持ち悪い」が解消できる事には意味がある。
>>854 で、スコープ全般の話になってループだな。
>>857 今までと違う文法を導入しなければならないので
しばらくは複数の書き方が並存することになる。
読むほうは両方読めないといけない。って意味で学習コストが上がるよね。
「ちょっと気持ちが悪い」程度であれば、この程度で潰されるんじゃないか?
>>860 それをいうならTigerなんか悲惨だが。
>>861 Tiger で導入されたのは「ちょっと気持ちが悪い」を解消するための機能なのか?
どんな例をだしても認める気ないじゃん。
>>862 あーあー、「そういう例が出ない」の次は「これだけ?」ですか。
>>864 メリットが多い事を示すなら量出さなければならないのは自明だと思うが。
っつか、
>>855 return の前に counter-- しないとマズイのでは?
もしくはtry の位置が違うとか。
>>863 違うのか?
・Staticインポート
・Enum
・autoboxing
・foreach文
・可変長引数
・・・
genericsやannotationに混じって、どうでもいい拡張がされてるけどな。
>>865 immutable とか定数っぽい例があんだけ出てるんだから、もっと出せるでしょ。
>>862 はいはい、よくあるオートリロードの設定例ね。
private static long lastModified = -1;
private static File file = new File("foo.properties");
private static Properties conf = new Properties()
public static String getConfig(String name){
if(file.lastModified() != lastModified){
reload();
}
return conf.getProperty(name);
}
>>867 enum が「ちょっと気持ち悪い」程度を解消するためのもんなのか?
まぁ使わない人はそー思うのかもしらんが。
どれだけ出ても「少ない」だろw
>>866 なんで量を出すという話にすり替わってんだ?
immutable でない典型的な例が出てるぞ。おまえのよりどころはもう「少ない」の言葉っつらだけか?
> おまえのよりどころはもう「少ない」の言葉っつらだけか? 前からそうだよ。
>>869 お、ファイルの最終更新日時取得するの忘れてる orz
また嬉々として突っ込まれちゃうなw
>enum が「ちょっと気持ち悪い」程度を解消するためのもんなのか?
違うのか?コンパイラによるチェックがされる程度のメリットしか感じない。
タイプミスを軽視するおまえなら、わかるよな。
>まぁ使わない人はそー思うのかもしらんが。
クラス変数をつかわないおまえが、メリットが少ないと思うのと同じだろ。
つか、
>>867 のほかの機能についてはどうよ?おれは「ちょっと気持ち悪い」を解消する程度にしか見えないんだが。
>>855 何故だか分からないが、俺のゴーストが「このコードは危険だ」と囁いてるw
単に馴染みの問題という可能性も否定しきれないんだが、どうも保守に苦労
しそうな悪寒が・・・・・・
>>860 いや、コストは上がらんでしょ?その点で言えば、寧ろ「ちょっと気持ち悪い」
が解消できるメリットの方が大きい。
>>875 そういやenumって新しい予約語なんだっけ。予約語を導入したくなるほどtype safe enumに魅力があるとは思えん。
>>869 >>855 の例と違って、こっちには気持ち悪さを感じない。
まぁ、主観100%なわけだが、この感情がどこから来るのかは
ちょっと興味深い。スマソ、独り言だorz
>>875 > 違うのか?
いや、型が導入される事のメリットは大きいね。
switch にも使えるし。
> つか、
>>867 のほかの機能についてはどうよ?
EOD を実現(?)するための機能なんじゃないの?
autoboxing とか static import は個人的には無くても良いと思うけど
方向性としては一貫してると思うよ。
>immutable とか定数っぽい例があんだけ出てるんだから、もっと出せるでしょ。 根拠がまったくわからん。
enumって使ってるやついないのかよー
ずっと使いまくりなんだがSwitchがとおったりコンパイルエラーではじきやすいってのは十分なメリットじゃないのか?
Cのenumになれたからintで十分ってか?
>>875 がつりに見えてしょうがない
>コンパイラによるチェックがされる程度のメリット うぁ〜いヽ(´Д` )ノ お前、凄いこと言い始めてるぞ、ちょっと冷静になれ。
>>878 うん、我ながら前者はちょっと一般的じゃないね。
あとは毎日 0:00 を超えたら DB からコードテーブル持ってきて static 変数に保持しておくのとか
あるね。
>>882 >>875 は
>弊害がスペルミスによる誤用ぐらいしかないから。
といいきったやつへの皮肉なんだけど。なんでスペルミスは軽視してenumは重要視するんだ?
まぁこんなのか private static final FOO = new Foo(); public static String getCodeLabel(String name){ FOO.checkReload(); return FOO.getCodeLabel(name); }
>>885 スペルミス防止以外にも switch に使えたり
int の定数使ってて、単純な計算で整数型に成り下がる事とかを防止できたりするから。
簡単に言えば、メリットが多いから。
>>888 メリット言ってるんだもん、一つでも多ければ十分でしょ。
>>889 で、君の「メリットが少ない」を否定するにはいくつ必要なわけ?
なるほど、ゴールは無いわけだw
>>890 あぁ、例とメリットをごっちゃにして数だけを比較してるのか。
>>878 クラスとは別にメソッドが独自の状態を保持するというのは、JAVA的には
そもそもなじみがない。
>>855 の例からは具体的な全体像とでも呼ぶべきものが想像しにくいから
それが安全か否か判断できず気持ち悪さとして感じるんだろうと思う。
>>869 の例では書かれてない部分も比較的安易に補完できる(いくつかの
可能性を当て嵌めてみることができる)から、安全そうだと判断できる範囲
に応じて気持ち悪さが低減されてるのではないか?
もしかして、 ・関数限定staticがCにあるから、Javaでもあってしかるべきだ。 ・Type Safe EnumはCにはないから、Javaにも別に必要なかったものだ。 ということなの?
>>885 皮肉だったのなら別にそれで構わない。一瞬、本気で言ってるのかと
思ったぞw
後段については俺ではなく本人に聞いてくれ。
>>893 例が云々は出たが関係ない。都合が悪くなったらっていちいち逃げるな カス
メリットが多い少ない良い始めたのはおまえだ
い く つ 必 要 な の ?
>>899 Sun に言語仕様変えさせたいならいくつ必要だと思う?
>>894 >>855 は以前作ったうpローダーで後付けで同時アクセス数制限設けた奴だ。
用途が分かれば少しはすっきりするかな?
メソッドローカルなクラス変数が使えると便利だという人と、そうじゃないという人がいる。 どっちも主観だから、議論は平行線。 ここで話を変えてみませんか。メソッドローカルなクラス変数が使えると何か不具合がありますか?
>>902 結局のところ、言語仕様変わんないのに 2ch で騒いだって意味ないし。
>>900 おまえに、おまえが納得する数字を聞いてるんだけど
なんで Sun が出てくるわけ? バカ だろ?
そろそろ勝利宣言の準備してますよ
> 結局のところ、言語仕様変わんないのに 2ch で騒いだって意味ないし。 必殺ちゃぶ台返し キタ━━━━(゚∀゚)━━━━ッ!!
>>903 メソッドローカルなクラス変数より入れて欲しい機能ならあるかな。
C# の struct みたいな lightweight class とか。
>>908 また話をそらす。で、メソッドローカルなクラス変数があるとどんな不具合があるの?
C# なら override 宣言とかあるな。 まぁイージーミス防止にメリットを見出せない奴には不要かもしれんが。
immutable、enum、Sun、C# に続く逃げ道を探すべくレス遡ってますのでしばらくお待ちください
>>912 override なら annotation で対応してなかったっけ?
なんだかよくわからん議論だな。
>>803 >スコープ限定できてもスコープ限定できる以上の意味がほとんど無いと思うけど。
>スコープを限定することに意義があるってんなら話は別だけど。
最初っからスコープの話をしているんだとおもうが。違うのか?
>>558 >static変数をメソッドの中で定義することは可能ですか?
>具体的には、java.util.regex.Patternオブジェクトを毎回生成せずにstatic変数にしているんですが、
>特定のメソッドの中でしか使用しないんで、そのメソッドの中で定義できるとうれしいんですが。
>>616 >クラス変数でだめなんていってない。クラス変数のスコープをあるメソッドだけに限定したいというだけだ。
>>911 ちなみに、メソッドローカルなクラス変数があるとどんな不具合があったりなかったりすると何かあるの?
>>916 おまえは苦しくなると質問に質問で答えるのな。
>>915 途中で 「俺はスコープ全般の話などしていない、immutable な Pattern を
メソッドローカルなクラス変数にするメリットは少ない」とか言い始めた。
>>919 実際問題少ないし、Patternの例が不適切だって言ってたのをちゃんと読めば
そーゆー風に読み取れると思うが。
>>918 つまり、元ネタと流れを読まずに一方的に immutable が云々の一人相撲とってたというわけね。
いやーよく引っ張ったね、君埋め氏でしょ?w
>>920 あぁメリットが少ないってのは定数とかimmutableと変数を比べて
変数よりメリットが少ないって事ね。
>>921 いやぁ、優秀な協力者がいてくれたからですよw
>>921 いや、元ネタしか読まなかったのが原因だと思われ
流れが読めなかったのはお互い様でしょ
まず、話の発端は >クラス変数のスコープをあるメソッドだけに限定したい ということでよろしいか。 それから長々と議論があって、なぜか >あぁメリットが少ないってのは定数とかimmutableと変数を比べて >変数よりメリットが少ないって事ね。 という結論になる。 ごめん、おれには流れがさっぱりわからんかった。
>>920 「ちゃんと読めば」って、おまえがちゃんと読めよ。
>>926 最初の例が immutable だったからさ。
で、メリット君は一般論としてスコープを限定する方針に関してはどう思ってるわけ?
メソッド内でクラス変数が定義できることに、メリットを感じる人がいる(もちろん感じない人もいる)。
んで、できたとして特にデメリットはなさそう。
かつ、
>>656 や
>>674 あたりをみると、技術的に問題はないらしい。
じゃ、あったとしてもいいんじゃないの。メリットが少ないって主張する人もいるけど、そうじゃない人も少なくないみたいだし。
個人的にみても、少なくともstatic importよりは役に立ちそう。
「自分がメリット感じないから反対」っていうのはよくないんじゃないかな。
>>926 途中で具合が悪くなって「スコープ全般の話はしてない」とか言い始めただけ。
そのまま引けなくなって今に至る。
おいメリット、もう寝たのか?
>>930 一般論としてスコープを限定するのに反対した覚えはないんだが。
そうそう、
>>803 の
> スコープ限定できてもスコープ限定できる以上の意味がほとんど無いと思うけど。
> スコープを限定することに意義があるってんなら話は別だけど。
ってのはスコープを限定した事による自己満足に意義がある、
程度の意味で言ってたつもりなんだけど。
どーも通じてなかったみたいで。
>>931 > 「自分がメリット感じないから反対」っていうのはよくないんじゃないかな。
言語仕様変えるってな話であれば、言語仕様変えられる人的資源とかは限られてるんだから
メリット感じないなら反対されるのは当然なのでは?
このスレはもう埋めちゃっていいから他のスレに流出したり次スレ立てたりしないでね。
>>930 どうって、「メリットがある」でいいじゃん。プログラムすっきりするし。例もたくさんあったし。
おまえにとってはメリットじゃないんだろうけどな。
,, ,.. -───--:、 l゙,ヽ /:::::::メリット:::::::::::::::丶 おやすみ、うんこども `、`\ ,〃::::::;ィ:/!:::::/l:::::;:;::::::::ヽ \. \ ' i´|::;イ,:rj:、|:::/'rj'く:、!::::::::::i \ \ レ'(●), 、(●):|i:;l::::::| \ `'-、_ i' ,,ノ(、_, )ヽ、,, レ' il:::| \ | lト、ヽ,`-=ニ=- ' ...ノ:::l \:| ||、``lヽ`ニニ´ /:::::::::::::'、 iノ」,! ', ノ Li゙)_ iヽ;:::::::ヽ,'--'=‐' ヽl il,L,.>',"_,..>:;::::::':、_ / ,)、ヾ,,' y'´,.-='、ー-‐"
>>838 本筋から外れるが
Singleton の例もありえないと思ったが、
こんな書き方はありえないことを
分かってて書いていると期待したい。
メソッドやブロックに可視のスコープを縮めることは
別にどっちも応援してるわけでないが、
いくら例だからといって
こんないい加減なものを書いているのを見るとウンザリする。
さらに、皆それをスルーして議論を続けてるのもな。
だれか突っ込め
940 :
930 :2005/07/10(日) 03:46:21
>>934 >言語仕様変えるってな話であれば、言語仕様変えられる人的資源とかは限られてるんだから
>メリット感じないなら反対されるのは当然なのでは?
はあ?なんで人的資源とかでてくるわけ?そんなのはJCPとして提出でもした場合の話だろ。
またありもしない将来の話を持ってくる。だから話がわき道にそれてばかりなんだよ。
おまえのいうデメリットって人的資源に関することなのか。
>>939 面目ない。double-checked locking が直ぐに出てこなかったもんで。
>>942 double-checked locking って、いい事聞いた。
>>945 static 変数いじるのに this を同期化してもしゃーない、であってる?
947 :
デフォルトの名無しさん :2005/07/10(日) 04:22:09
>>946 書き込みだけでなく読み込みの方も同期する必要あり。
中途半端に書かれた内容が読み取れる可能性がある。
という点からは、double-checked と同じか...失礼
ぶっちゃけ、クラス自身が遅延ロードされるのだから
単純なシングルトンはおおよそ必要ない
sage忘れたついでに >> 946 同期するのに使うオブジェクトは、実は何を使おうと構わない。 ただし、一貫して同じものを使わないとスレッド間でセッションが重なるのでダメ
そりゃそうだ
なんだか二日見ないうちにすごいことになってるし。 メリット君ってなに?
>>951 そもそも あんなんでセッション管理はしない。
セッションってサーブレットの? ページ繊維とは書いてあるがどっからそんな話が。
954 :
617 :2005/07/10(日) 05:25:21
メソッド内の「クラス変数」にこだわる人が多いけど メソッド内の「インスタンス変数」に関してあんまり意見がないのが悲しい。 言語仕様上は対称なほうがきれいだろうし。 で、どっちもMixJuiceでは大体似たようなことができるし C#のpartial classでも大体似たようなことができる。 似たような、ってのは残念ながらスコープを絞るんじゃなくて 一クラスを複数のソースに分割して定義できるようにするだけだから。
>>954 annotetaion と適当な構文チェッカーかクラスファイルチェッカー使えば
簡単にできそうかも、って思ったけど
メソッド(コンストラクタも?)渡すのが面倒っぽいよーな。
誰かやんない?
>>954 むしろメソッドローカルなインスタンス変数の方が使用頻度は高そうだと思う。
まぁメリット君がこだわってたからね>クラス変数
>>951 セッションって書いたのは、単に
同期している期間って程度の意味で書いただけで
深い意味じゃない
>>838 は読み取りは同期すらしてない
>>954 あぁ、無理無理。
C言語の関数内での static みたいにすれば簡単に導入できるってのが
メソッドローカルなクラス変数支持派の思考だったからね。
おはよう、メリット
起きるの早っw
>>956 その割にはクラス変数の例しか出てこんかったよーな。
メリット君はインスタンス変数にもかなり言及してるね
誰かさんは、
>>687 とかで
> 知るかよ、そんなの。
とか言ってますが。
962 :
デフォルトの名無しさん :2005/07/10(日) 05:55:23
> その割にはクラス変数の例しか出てこんかったよーな。 そういう例を出せといったのはおまえだろメリット。
>>962 インスタンス変数の方が使用頻度高いと思うなら
インスタンス変数の例出してもよかったんじゃない?
散々メリット君がインスタンス変数に言及してるんだしさ。
どこにもクラス変数の例しか出しちゃいかん、なんて書いて無いと思うけど。
>>963 聞こえなかったならもう一回言おう。
そういう例を出せといったのはおまえだろメリット。
> 散々メリット君がインスタンス変数に言及してるんだしさ。
散々ってどこで?
965 :
デフォルトの名無しさん :2005/07/10(日) 06:04:20
なんか露骨に擁護してる奴がいるなw
>>964 > そういう例を出せといったのはおまえだろメリット。
いいえ。
> 散々ってどこで?
インスタンス変数で検索すればいっぱい出てくるよ。
>>659 メソッドローカルなインスタンス変数を作ろうとするときに障害になる可能性もある。
>>677 メソッドローカルなインスタンス変数を追加しようとした場合はどーすんの?
メリットと思われるのはこれだけ。ヒットしたほとんどはおまえと反対側の書き込み。
おまえは必死に「メソッドローカルなインスタンス変数を導入するときに問題になるかも」とか
言い訳してただけだろ。言及?笑わすな。
おい、またわだいそらしのまほうで誘導されてるぞw
,, ,.. -───--:、 l゙,ヽ /:::::::メリット:::::::::::::::丶 おはよう、うんこども `、`\ ,〃::::::;ィ:/!:::::/l:::::;:;::::::::ヽ \. \ ' i´|::;イ,:rj:、|:::/'rj'く:、!::::::::::i \ \ レ'(●), 、(●):|i:;l::::::| \ `'-、_ i' ,,ノ(、_, )ヽ、,, レ' il:::| \ | lト、ヽ,`-=ニ=- ' ...ノ:::l \:| ||、``lヽ`ニニ´ /:::::::::::::'、 iノ」,! ', ノ Li゙)_ iヽ;:::::::ヽ,'--'=‐' ヽl il,L,.>',"_,..>:;::::::':、_ / ,)、ヾ,,' y'´,.-='、ー-‐"
>>970 に補足。
メソッドローカルのクラス変数云々の議論は合流させないでください。
散々メリット君がインスタンス変数に言及してるんだしさ。 散々メリット君がインスタンス変数に言及してるんだしさ。 散々メリット君がインスタンス変数に言及してるんだしさ。 散々メリット君がインスタンス変数に言及してるんだしさ。 散々メリット君がインスタンス変数に言及してるんだしさ。 散々メリット君がインスタンス変数に言及してるんだしさ。 ワロス
寝たんじゃなかったのかよ (藁
【Java】次世代Java・J2CH0.16の草案【2ch版】 誰かこんなスレ立ててくれない? ローカルディスクの残量は何時になったら取得できるんだ! とか、Delegateパクろうぜ!とか、色々溜まってないか? 隔離スレとしてどうよ? てか、質問スレ的には、質問「メソッドローカルなクラス変数は ありますか?」回答「ありません。」で、本来は終了すべきだ。
早く寝ろ
978 :
デフォルトの名無しさん :2005/07/10(日) 11:19:24
>>556 チミは、図星感溢れる厨房大学生ですな。
いや、大学生というより厨学生といったほうがその名にふさわしい
Delegateはいらね プロパティ用構文はJavaで日本語が通らなかったときから欲しいといわれ続けてるのに こっちは無視かなぁ
おうおう。無駄にすすんどるのう。
981 :
デフォルトの名無しさん :2005/07/10(日) 12:43:08
おまえも手伝え
982 :
602 :2005/07/10(日) 12:53:20
>>609 遅レス申し訳ありません。情報ありがとうございました。
CLDC MIDP で考えずとも
IBM から CDC 製品が出ていたんですね。
>>602 を書いた後、個人で情報収集を行ったところ、
Pocket PC 向けには IBM の J9 という Java 環境が良い、
というお話を実際に開発経験のある方から伺ったのですが、
ご紹介いただいたものの過去のバージョンのもののようですね。
このスレ見てID表示してほしいなと思った今日この頃。
>>983 お前みたいなヤツがまた2chをつまらなくする。
メリット君みたいなのはすぐ分かるからいらないだろー ID 入ったところでここは技術板、俺でも十数個の IP アドレス使い分けられるから意味無いかもね。
メリット君みたいなのはすぐ分かるからいらないだろー ID 入ったところでここは技術板、俺でも十数個の IP アドレス使い分けられるから意味無いかもね。
987 :
デフォルトの名無しさん :2005/07/10(日) 14:03:31
988 :
デフォルトの名無しさん :2005/07/10(日) 17:51:17
(・∀・)イイ! のEだろ。
マジレスしとくと、ElementのEだよ。
991 :
988 :2005/07/10(日) 22:00:53
>>989 Σ(・∀・)!
>>990 えぇっと、Elementって何でしょうか。
立て続けにすみません(;´д`)。。。
辞書も引けないかわいそうな人がいるスレはここですか?
993 :
988 :2005/07/10(日) 22:15:41
>>992 いや、単語の意味は分かるんですが、Javaにおいてはどういう概念で使われてるのかなと思って。
例えばJDK1.2のAPIリファレンスには<E>って記述はなく、ArrayList.get(int index)の返値なんかも
「E」ではなく「Object」として定義されてたりして。
どう違うのかなと。
ゲネリクスでぐぐれ
ゲネリクスに該当するページが見つかりませんでした。 検索のヒント - キーワードに誤字・脱字がないか確かめてください。 - 違うキーワードを使ってみてください。 - より一般的な言葉を使ってみてください。
>>993 1.5 から追加された generics 使ってるから 1.2 では Object になってる。
E は型パラメタ。大雑把にいえば、ArrayList を String の可変長配列と使用したいときに
ArrayList<String> list を使えば String str = list.get(index); みたいにキャスト無しで取り出せる、とか。
998 :
988 :2005/07/10(日) 22:40:40
>>994-997 なるほど。リストに格納するモノをある程度定義できるんですね。
後はもうちょっと自分で調べてみます。
どうも有難dでした!
1000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。