【初心者】Java質問・相談スレッド118【歓迎】
すまんスレタイ微妙に失敗しちまった
あーしかもテンプレの前スレの所も変えてねえ マジでゴメン
乙 同期に失敗したか・・・・・
6 :
デフォルトの名無しさん :2008/08/11(月) 02:00:42
プロパティファイルについての質問です。 プロパティファイルを読み込んでくれるファイル位置と優先順序はどうなっているんでしょうか? warパッケージやearパッケージの際にパッケージにプロパティファイルを含めずあとで入れ替えられるようにするにはどうすればいいんでしょうか
1. 入れ替えてbuildする 2. 入れ替える必要があるならば最初から外部ファイルにする
8 :
デフォルトの名無しさん :2008/08/11(月) 10:23:54
javaで積分するにはどうやってやるんですか?
親のクラスであるメソッドをsynchronizedしていても、そのクラスを拡張したクラスでオーバーライドしてsynchronizedしていなければ同期化されないのでしょうか? class Parent { public synchronized void method(){ } } class Child extends Parent{ public void method(){ // ここが同期されるか } }
自分で試したら?
11 :
デフォルトの名無しさん :2008/08/11(月) 11:14:25
2つのabstractクラスがあります。ClassAとListAとします。 ListAは以下のようになっています。 public abstract ListA<E extends ClassA> implements List<E> { ... } ClassAにはそのクラスが扱うデータの名前を返すabstractメソッドがあります。 public abstract String getObjectName(); このメソッドが返す値は静的な値ですがstaticメソッドはabstractに出来ないので、 普通のクラスメソッドになっています。 public class ClassB extends ClassA { ... public String getObjectName () { return "obj b"; } } ClassAとListAの具象クラスは常にペアで使われます。 public class ListB extends ListA<ClassB> { ... } ここで質問なんですが、ListAの内部でもClassAのgetObjectName()で返される値を 使いたいのですが、今はListAでも同じ名前のabstractメソッドgetObjectNameを定義し、 ListBで全く同じ値を返すように実装しています。 public class ListB extends ListA<ClassB> { .... public String getObjectName () { return "obj b"; } } 同じメソッドを2箇所で定義しなきゃいけないのがなんとなく気持ち悪いです。 誰かもっと綺麗なやり方を教えてくれませんか?
IOExceptionの例外が発生した場合、getMessageでエラーの内容を 知ることができるわけですが、これをエラーコードという形で 取得することはできないでしょうか。 やりたいことは、xxxの例外だったら、zzzの作業を実行したいという感じです。
>>6 クラスパスの順で探すから、クラスパスを何とかすれば何とかなるんじゃないかね。
>>12 IOExceptionのサブクラスが定義してあるものじゃないと区別できないと思う。
>>11 たかだか文字列の取得なら、リストも中身も、継承つかわずに、
objectTypeをフィールドにして、基底クラス(Aのほう)が持つべき。
(振る舞いの違いがそこだけなら、完全に無駄な継承)
その際、リストと中身が類似じフィールドを持つのは、
要件によっては仕方ない。
フィールドの決定(生成時or登録時)がバラバラにならないように留意する。
階層がもっと増えて、リストなのか、中身なのかを意識せずに
アクセスしたいなら、getObjectName()をインタフェとして切り出す。
(コンポジットパターン。実装が簡潔になるわけではない)
>>12 IOEが出た段階で遡って区別するのは、だいたい無理じゃね?
15 :
11 :2008/08/11(月) 12:46:46
>>14 基底クラスでprotected String objectName; と定義しても、
public class ClassB extends ClassA {
public String getObjectName () { return "obj b"; }
}
public class ListB extends ListA<ClassB> {
public String getObjectName () { return "obj b"; }
}
が
public class ClassB extends ClassA {
public ClassB () { objectName = "obj b"; }
}
public class ListB extends ListA<ClassB> {
public ListB () { objectName = "obj b"; }
}
になるだけで、大した違いはないように思えます。
振る舞いの違いはそれ以外にも沢山あるので継承は必須です。
> その際、リストと中身が類似じフィールドを持つのは、
> 要件によっては仕方ない。
が答えって事ですかね。
JAVAを初めて勉強するのにどんな本があるでしょうか? 定番というか一般的に人気のある本などを教えて頂けませんか? レベルや用途別に分けて貰えると尚助かります。
18 :
デフォルトの名無しさん :2008/08/11(月) 14:36:56
>>16 ホームページは簡潔にまとまってるから十分だし、本は要らないじゃないの。
ファイルの終端に到達するまでデータを読み込むループを 書いているのですが、java.io.EOFExceptionでループを抜けてしまいます。 読み込みに使っているのは、ObjectInputStreamのreadObjectで、 この戻り値がnullであるときにループを抜けたいのですが、 先の例外が出て、希望どおりになりません。 どうしたらよいでしょうか。
writeObjectでnullを書き込んでいれば、readObjectでnullが戻ります そうでなければnullは戻りません
確かに充実してるし、ホームページでいいんじぇね?
>>20 writeObjectのnull書き込みが、終了の目印になっているようですね。
無事うまくいきました。ありがとうございます。
>>11 getObjectNameという名前をつけていながら実体はgetSubClassNameなんだな。
Listのほうはjavaのジェネリックはerasureだからうまい方法はないね。
ジェネリックではなく実際の型かObjectが必要になる。
多態性は魅力的だろうけどセオリーとは反対に、
クラスの属性で分類してcase文並べるほうがシンプルになるケースもあるから
ある手法で手詰まりなら別の手段をあたってみるのもいいと思うよ。
24 :
14 :2008/08/11(月) 16:26:09
>>15 んっと、提示されたAとBのgetメソッドの違いは、
「振る舞いの違い(=継承で書き換えるべきもの)」
ではないということを言いたかった。
プロパティとして持たせてあげれば、Bのgetメソッドはいらない。
そのプロパティを設定するのは、静的ならコンストラクタ内になる。
まあ、一番キミが聞きたいとこからはずれてるので、気にしなくていいが、
class A {
private String ob="obj a"; //デフォルト
public String getObjectName(){ //ゲッタ
return ob;
}
protected void setObjectName(String name){//セッタ
this.ob=name;
} }
class B extend A{
B(){
super();
setObjectName("obj b"); //静的ならここ書く。
} }
今回はどうせBを作る需要があるということなので、こんな感じ。
ただgetObjectName()の戻りを変えたいだけなら、setObjectNameを
公開するか、コンストラクタ引数にする。それだけのためのクラスは不要。
25 :
11 :2008/08/11(月) 18:29:07
>>23 ,24
解説どうも。
なぜabstractメソッドにしたかというと、子クラスを実装する開発者にobjectNameを
セットするのを強制させたかったからです。
もちろんabstractメソッドを使わずに、親クラスでobjectNameをチェックしてnullだったら
RuntimeExceptionを投げるとかでもいいんですが。
Listの件、うまい方法はないってのは了解です。
ファイル名が適切でない(例えばWindowsでは\など)かどうか判断するにはどうすればよいでしょう。 自分で実装するしかないのでしょうか?
JSFの条件分岐処理がうまく行きません。
http://localhost:8080/test/index.jsfから 、
テキストボックスに、"root"と入力して、ボタンを押したら、
result.jspで、"こんにちわ、rootさん!"と表示されて、
テキストボックスに、"root"以外の文字列を入力して、ボタンを押したら、
index.jspで、"文字を入力してください。"と表示したいです。
・構成は、下記配置です。
/test/build/classes/jp/co/pkg/Interface.class
/test/build/classes/jp/co/pkg/Test.class
/test/WebContent/WEB-INF/lib/jsf-api.jar
/test/WebContent/WEB-INF/lib/jsf-impl.jar
/test/WebContent/WEB-INF/lib/jstl-1.2.jar
/test/WebContent/WEB-INF/faces-config.xml
/test/WebContent/WEB-INF/web.xml
/test/WebContent/WEB-INF/index.jsp
/test/WebContent/WEB-INF/result.jsp
だめな文字でファイル作成しようとしたときのstacktrace確認するとFileOutputStream#open(NativeMethod)でエラー起きてるから、特にそういう機能はないみたいですね。 すみません。自己解決です。
<%--index.jsp--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="
http://java.sun.com/jsf/html " prefix="h"%>
<%@ taglib uri="
http://java.sun.com/jsf/core " prefix="f"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd ">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<div>
<f:view>
<h:form>
<h:outputText value="お名前は?" binding="#{Test.text}" /><br />
<h:inputText binding="#{Test.field}" /><br />
<h:commandButton binding="#{Test.button}" action="#{Test.getButton_action}" />
</h:form>
</f:view>
</div>
</body>
</html>
<%--result.jsp--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="
http://java.sun.com/jsf/html " prefix="h"%>
<%@ taglib uri="
http://java.sun.com/jsf/core " prefix="f"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
http://www.w3.org/TR/html4/loose.dtd ">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<div>
<f:view>
<h:form>
<h:outputText value="#{Test.text}" />
</h:form>
</f:view>
</div>
</body>
</html>
//Test.java package jp.co.pkg; import javax.faces.component.html.HtmlCommandButton; import javax.faces.component.html.HtmlOutputText; import javax.faces.component.html.HtmlInputText; import jp.co.pkg.Interface; public class Test implements Interface { private HtmlCommandButton button; private HtmlOutputText text; private HtmlInputText field; public void setButton(HtmlCommandButton button){ button.setValue(login_button); this.button = button; } public void setText(HtmlOutputText text){ this.text = text; } public void setField(HtmlInputText field){ this.field = field; } public HtmlCommandButton getButton(){ return this.button; } public HtmlOutputText getText(){ return this.text; } public HtmlInputText getField(){ return this.field; } public String getButton_action(){ String str = (String)this.field.getValue(); if(str.equals("root")){ text.setValue("こんにちわ、" + str + "さん!"); return "true"; }else{ text.setValue("文字を入力してください。"); return "false"; } } }
//Interface.java package jp.co.pkg; public interface Interface { public static final String login_button = "ログイン"; }
以上です。よろしくおねがいします。
うpろだ使えカス
37 :
デフォルトの名無しさん :2008/08/11(月) 23:07:08
38 :
デフォルトの名無しさん :2008/08/11(月) 23:56:59
すいません 入力が数字の場合と文字の場合とで処理を分けたいのですがそういう関数ってありますか?
match("\\d*")
awt が重量コンポーネントに対して swing が軽量コンポーネントと呼ばれますが swing は awt を継承している(包括している)と思うのですが・・・ 何が軽量なのでしょうか
ネイティブコードが少ない
>>41 Swingの解説を読めばまっさきに書いてあると思うんだが……。
OSのリソースを使わないという意味で軽量だな 処理の重さや、継承によるコード量とかじゃない 描画はネイティブじゃないぶんだけ遅い
45 :
デフォルトの名無しさん :2008/08/12(火) 02:18:02
描画が速いとかいってる奴がいるけど、英語の解説をちゃんと読んだことあるか?
またその話っすか
48 :
デフォルトの名無しさん :2008/08/12(火) 09:23:38
javaで積分するにはどうやってやるんですか?
49 :
デフォルトの名無しさん :2008/08/12(火) 09:40:05
それよりも微分はどうやるんでしょうか?
夏厨ばっかだなw
おまえに聞いてない
appletに関する質問なのですが ・JDK1.2以降のAPIが使えない(java.util.jarやjavax.*が使えない) ・applet格納jarとは別の.auファイルをまとめたjarなりzipなりがある ・アーカイブは後付で読み込む(起動後に読み込むものが決まる) という状態で、外部アーカイブ内の.auファイルから音声オブジェクトを作成する方法ってありますでしょうか? 自分で考えた限りでは2通りのアプローチかなと思ったのですが他に何かいい方法があるかなと思いまして… 1)読み込んだアーカイブをclasspathに追加する classpathに追加できればApplet#getAudioClip(URL)で読み込めるが、追加方法がわからない (System.setProperty()でjava.class.pathをsetしても意味がないらしい) 2)sun.audio.AudioStreamを使う ZipInputStream→ZipEntry→byte[]→ByteArrayInputStream→AudioStreamで 読み込み&再生には成功したが非公開APIなので互換性の心配がある
>>47 44は「遅い」って書いてあるように俺には読めるんだが
以下のパディングで、全角を半角2文字分として処理させる手段はあるでしょうか。 System.out.format("%3s_", "あ"); 結果: あ_ ※スペースが前に2つ入ってしまう。これを1つにしたい。
>>48-49 数値微分、数値積分だったらできる。
差分法、区分求積法、リーマン積分、台形公式、シンプソンの三分の一則、ロンバーグ積分でググれ。
というか数値計算や数値解析の本読め。
ただし連続関数の微分、積分は一筋縄ではいかない。
正規表現が必要になってくる。
正規表現はいらないだろw なにいってんだこいつは。
>>55 そこに書いてないようだけど、数値微分はどうやるの?
58 :
デフォルトの名無しさん :2008/08/12(火) 13:26:14
JavaMailで質問です。 プログラム内でPDFを作成して添付ファイルとして送りたいのですが、 作成したPDFをファイルシステムに保存したくありません。 今はこんな感じでやってます。 //PDFファイルを一時ファイルとして書き出し File tmpFile = File.createTempFile("foo", ".pdf"); //PDFをOutputStreamに書き出す独自クラス report.renderPDF(new FileOutputStream(tmpFile)); MimeBodyPart attachedPart = new MimeBodyPart(); attachedPart.setFileName("filename.pdf"); attachedPart.setDataHandler(new DataHandler(new FileDataSource(tmpFile))); File.createTempFile を使わずに添付ファイルを送るいい方法はありますか?
Thread.sleepとwaitって何が違うんですか?
waitはnotifyされたときに起きる
>>58 FileOutputStreamの代わりにByteArrayOutputStream使って
FileDataSourceの代わりにDataSourceの自前の実装を使えばいいんじゃない
main()の戻り値を返す方法はありませんか Cならreturnで戻せるのですが・・・
63 :
58 :2008/08/12(火) 13:55:46
>>61 ありがとうございます。やっぱり自前で何かやらないとダメですか…
正規表現でパスワードをチェックしたいのですが、 半角数字、アルファベット大文字、小文字が混在していることを 条件にする方法がわかりません。
>>66 無理に正規表現にするのはどうかと思うが・・・これでどう
(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])
68 :
66 :2008/08/12(火) 15:39:38
私も最初にその方法で確認したのですがだめでした String str = "Hoge0123"; System.out.println(str.matches("(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])")); falseになります。
定数の扱い方について教えてください。 クラスの中にprivate finalをたくさん定義するのはよい方法なのでしょか。 C言語では、ヘッダーファイルに定数をまとめたりしますが、 javaではどうなのでしょうか。
>>68 それだけだとゼロ文字にしかマッチしない
(?= ) は1文字も食わないから
>>69 よい方法
少なくともコード中にマジックナンバを書くよりは
用途によってはenumを使え
>>71 レスありがとうございます。
ただ、あまりにも定数が増えてくるといいますか、
どこまで定数として定義したらよいかの判断が難しいです。
たとえば、"ファイルの読み込みに失敗しました。"という文字列が
コード上で一回しか出てこないのなら、定数にする必要もないのかなと思います。
>>72 文字列は国際化を考えてResourceBundleに入れるのが望ましい・・・けどまぁ面倒いよな
お好きにどうぞ
>>56 sin(x)をcos(x)に
log(x^2)を2x/x^2 = 2/x
と表示するにはなにかしら正規表現が必要
>>57 差分法と書いてあるだろう
>>74 地雷? 意味がわからない。
まずは数値計算の本を読め。
『Javaによるアルゴリズム事典』でも読め。
せいきひょうげんだと……?
もしかしてノーマライズのこといってる?
ワロタww
Regular representationだろ
regular expressionだろ
82 :
デフォルトの名無しさん :2008/08/13(水) 00:35:19
>>75 どうせ独学でしょ。sin[x]をcos[x]にするとかいってて、全然分かってないようだしw
>>78 いや? 約分という正規化もしたいけどそれとは別に。
正確には文字列処理というべきだったか。
正規表現というから唐突過ぎたみたいだ。
だが合成関数など複雑な数式になると微分するときに正規表現も必要になるんじゃないのかって言いたかった。
>>82 何が? あと、それだと配列になるぞ。
数値微分だったら簡単にできるだろ。
それとは別の、連続関数の微分のことを言ってるんだが。
正規表現という用語は文字列のマッチング用パターンを指すのでややこしいから別の用語を使ってくださいお願いします
MatheticaだったかMATLABだったか忘れたけど y = diff(sin(x)) と入力すると y = cos(x) と表示してくれる言語があった気がする
結局、ただの夏いやつだったんだよ・・・
>>83 SICPの Symbolic Differentiation みたいなのをやりたいということかな?
Schemeみたいに簡単にはいかないよ。自分で構文解析する必要がある。
構文解析してS式なり、構文木作ってしまえば、Schemeと大差は無いよ。
89 :
デフォルトの名無しさん :2008/08/13(水) 01:16:50
>>84 配列とか言ってるようだけど、独学だとしても最低限mathmaticaぐらいは使えるようになってくれ。
それとその数値微分だと、入力が10^-12なら出力は10^-6の半分程度の精度しかないんじゃないか?
91 :
デフォルトの名無しさん :2008/08/13(水) 01:23:00
数値計算はjavaでやるのが一番面倒がないね。ライブラリもそろってるし。 javaは、予約語だらけとかの他の複雑な言語に比べて簡単だからアルゴに集中できるけどね。
>>88-89 そういえばMATLABを思い出したよ
>>86 は
symbolic(x);
y = diff(sin(x),x)
と入力すると
y = cos(x)
になるやつだったかな。
SchemeとMathematicaは良く知らないがMATLABはよく触っていたから覚えている。
Javaで同じことができるライブラリをどこかで見つけたが有料だったので
諦めた記憶がある。どこのサイトだったかまでは覚えていない。
>>91 アルゴリズムをアルゴと略す奴は、MZユーザではないだろうな。
気持ち悪い略し方だ。アルクワリズミが草葉の陰で泣いてるぞ。
94 :
デフォルトの名無しさん :2008/08/13(水) 03:07:34
流れをきって質問です・・・ Java自体が始めてまだ数ヶ月なのですが、ウィンドウアプリケーションを初めて作ってみました。 そこで、たとえば3秒ごとにウィンドウに今の時間を更新して表示するプログラムを作りたいのですが、いままでならスレッドで for(;;){ min=calender.get(Calendar.MINUTE); System.out.println(min); Thread.sleep(3000); } と書いたスレッドを実行させておけばよかったのですが、ウィンドウ型になるとどうしていいかわからなくなってしまいました・・・ 説明が下手で申し訳ないですが、 「3秒ごとに今の時間を取得してそれをウィンドウに表示させる」 というプログラムを作りたいです
95 :
デフォルトの名無しさん :2008/08/13(水) 03:15:15
正規表現とか使ってシンボリックに微分をやったり数値計算するよりも、その結果を数学の自然表記にする方が難しいんだけどね。 積分や分数を教科書どおりにウインドに表示するとか。
96 :
デフォルトの名無しさん :2008/08/13(水) 03:25:44
>>93 アルコイズミとか出してきて、おまえのほうがキモイ
>>94 1.時刻表示ができる窓を作る。
2.時刻を更新するメソッドを書く。
3.2を定期的に呼ぶスレッドを書く。
4.3のスレッドの生成と実行を書く。
だいたいこんな感じ。
>>96 アルゴリズムの語源になった人だぞ < アルクワリズミ
そのTeXという言語を作る仕事がものすごく難しい
>>101 その難しいは、個人の能力が低い場合だろ・・・
>>101 技術的に難しいという意味じゃねーじゃん
>>101 そりゃ言語を作るのは、並大抵の難易度じゃないだろう。
けど、そういう話?
5.0から追加されたイグゼキュタって、時間を戻すと止まりませんか? 指定した遅延後に実行されるだけだと思うのですが、 どうもIO周りでブロックされているような気がします。 これだとNTPで時間を戻された時とかに使えないような? public class TestA implements Callable { private ScheduledFuture<?> future; private ScheduledThreadPoolExecutor pool = (ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(1); public static void main(String[] argv) { new TestA().start(); } public void start() { future = pool.schedule(this, 1, TimeUnit.MILLISECONDS); } private void run_() { System.out.println(sdf.format(new Date()) + ": running"); // !!!これがないと止まらないで動く ScheduledFuture<?> future2 = pool.schedule(new Runnable() { // 再スケジュール用のタスクセット public void run() { if (future.isDone()) { try { future.get(); future = pool.schedule(TestA.this, 1, TimeUnit.MILLISECONDS); // ユーザタスクの再スケジューリング } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } } }, 0, TimeUnit.MILLISECONDS); } public Object call() throws Exception { run_(); return future; } }
106 :
デフォルトの名無しさん :2008/08/13(水) 12:59:59
>>97 レスありがとうございます。
その、表示する窓についてですが、時間を更新する3秒ごとに描画し直さなくてはならず、
g.drawString(時間)
も3秒ごとに実行させる必要があると思っています。このdrawStringもスレッドに組み込むのでしょうか?
質問が悪く、初歩的で申し訳ないです
>>104 そういう話だった
Yacc/flexで言語作っている奴のコードを見ていたら
くそやばかった記憶がある。あれは並大抵の努力じゃ実現できないものだと思った。
>>106 描画はpaintもしくはpaintComponentでする
スレッドは3秒ごとにrepaintを呼ぶ
109 :
デフォルトの名無しさん :2008/08/13(水) 13:42:27
110 :
デフォルトの名無しさん :2008/08/13(水) 13:51:43
>>107 努力してるのかどうかよりも、何がくそやばかったのか分からないんだけど
くそやばかったかどうかよりbison/flexでもyacc/lexでもない件 ていうかjavaスレなんだからどうせなら標準でjavaを吐くパーザジェネレータの話をしようぜ
112 :
デフォルトの名無しさん :2008/08/13(水) 17:06:24
質問です。 最近Javaをはじめたのですが 配列を今勉強していて、 ArrayListに突っ込み、それを拡張する方法はわかったのですが 例えば int[] num_array = new int[5]; とかやった場合に num_arrayの大きさ自体を変える事は出来ないのでしょうか?
できない 新しく大きな配列を作って中身を移すしかない
>>112 新規に大きな配列を作って中身をコピーする時に、
使っているのがJDK6以降ならjava.util.ArraysクラスにcopyOfというメソッドがあって、
num_array = java.util.Arrays.copyOf(num_array, 10); // サイズ10の配列を新たに作って中身をコピーしたものを返す
みたいにできるのでちょっと便利。
元のnum_array自体を拡張するのではなく、サイズが変更されたコピーを返すところに注意。
配列は固定長であることに変わりはないので。
JDK5以前なら配列の作成とコピーのコードを自分で書かないといけない。
>150 使い方が色々間違っているような気がする あとstdはどこに変数宣言あるんだ? future.get(); も激しくデットロックの香り
>>115 縮めてみた。
import java.util.*;
import java.util.concurrent.*;
import java.text.SimpleDateFormat;
public class TestA implements Callable<Object> {
private ScheduledFuture<?> future;
private ScheduledThreadPoolExecutor pool = (ScheduledThreadPoolExecutor)Executors.newScheduledThreadPool(1);
public static void main(String[] argv) {new TestA().start();}
public void start() {future = pool.schedule(this, 1, TimeUnit.MILLISECONDS);}
public Object call() throws Exception {
System.out.println(sdf.format(new Date()) + ": running");
ScheduledFuture<?> future2 = pool.schedule(this, 1, TimeUnit.MILLISECONDS);
return future;
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" , Locale.JAPAN);
}
遅延を0にすればとまらないのだから、デッドロックと言うことは無いだろう。
時刻に達したら制止が外れるようなので、
1,2秒さかのぼった程度なら、問題にならないだろうけど、
夏時間とかはどうなるだろ。
また、時計を巻き戻して、処理が止まってから、時計を戻してみた。
すると、1分間ほど経ってから処理が再開した。
ThreadGroupのactiveCount()でグループに属するスレッドの数が取得できないのですが これは仕様ですか? // スレッドグループツリーの作成 ThreadGroup g1 = new ThreadGroup("g1"); Thread t1 = new Thread(g1, "t1"); Thread t2 = new Thread(g1, "t2"); ThreadGroup g2 = new ThreadGroup(g1, "g2"); ThreadGroup g3 = new ThreadGroup(g1, "g3"); Thread t3 = new Thread(g2, "t3"); ThreadGroup g4 = new ThreadGroup(g2, "g4"); Thread t4 = new Thread(g4, "t4"); // g1スレッドグループに含まれるスレッドの数 System.out.println("g1.activeCount() = " + g1.activeCount()); 上記のプログラムを実行すると g1.activeCount() = 0 と表示されます。 参考書を見ると g1.activeCount() = 4 と表示されるとなっています ご教授お願いします
startしていないthreadはカウントされない
>>118 ありがとうございます
もう一度試してみます
>>120 あれ。。俺がいる。
ホントすまなかった。
124 :
デフォルトの名無しさん :2008/08/14(木) 01:54:38
相変わらずキモイな C#と同じくどんどん糞スレになってくれ
掲示板を作ってるのですが、書き込んだ日時としてデータベースに Calendar#getTimeInMillis()で取れる値を入れて、 そのlong値を取得して何月何日何時何分何秒に書き込んだか表示したいのですが、 Calendar cal=Calendar.getInstance(); System.out.println(cal.get(Calendar.YEAR)); cal.setTimeInMillis(//データベースから取得したlong値); System.out.println(cal.get(Calendar.YEAR)); で比較すると後者のprintlnで表示される値が何を入れても常に1970になります。 setTimeInMillisをAPIドキュメントで見ると >Calendar の現在時刻を、指定された long 値から設定します。 と書いてあるのでこれで良いかと思ったのですが、これはどこを間違っているのでしょうか??
>>125 データベースから取得したlong値は正しい値で取得されている?
秒単位でなくてミリ秒単位だからだいたい 31500000000 より小さい値なら1970年になる。
127 :
デフォルトの名無しさん :2008/08/14(木) 03:39:42
アクセス修飾子について質問です。 protected: 同一クラスのインスタンス、またはそのクラスを継承したクラスのインスタンスからアクセス可能。 なし(デフォルト): そのインスタンス、または同一パッケージに所属するクラスのインスタンスからアクセス可能。 となっていますが、メンバが「なし(デフォルト)」の場合には、異なるパッケージに存在するサブクラスの インスタンスからは、アクセスすることができないのですか?
うん
129 :
デフォルトの名無しさん :2008/08/14(木) 03:48:49
では、アクセス就職子の序列が public > なし(デフォルト) > protected > private となっている参考書は間違いなのですか? 「protected」の場合にアクセスできるものに 「なし(デフォルト)」の場合にアクセスできないので。
>>127 protectedは同一パッケージ内のクラスからもアクセス可能。
131 :
デフォルトの名無しさん :2008/08/14(木) 03:50:59
protectedの説明が > 同一クラスのインスタンス、またはそのクラスを継承したクラスのインスタンスからアクセス可能。 になっているのなら、その参考書の説明は間違い。
あー逆だ public > protected >> なし(デフォルト) private が正しい。 protectedの方が公開の範囲が広い。
public > protected >> なし(デフォルト) private は、 public > protected > なし(デフォルト)> private ね。だから、 > となっている参考書は間違いなのですか? は間違いで正しい。 まとめると、 > となっていますが、メンバが「なし(デフォルト)」の場合には、異なるパッケージに存在するサブクラスの > インスタンスからは、アクセスすることができないのですか? は正しい。 > public > なし(デフォルト) > protected > private > となっている参考書は間違いなのですか? も正しい。つまり間違ってる。
134 :
デフォルトの名無しさん :2008/08/14(木) 04:13:16
そんな糞参考書は窓から投げておk
136 :
デフォルトの名無しさん :2008/08/14(木) 05:11:35
糞はおまえw
会話が成り立っていない
138 :
105 :2008/08/14(木) 10:10:40
>>115 書き込みが入りきるよう縮めていたら消していました。
使い方おかしいですか?
やりたいのはその都度実行する遅延を計算しなおしたいのです。
ここでは止まるのを確認するのに1msで常にやってます。
>>116 printlnでIOがブロック?と書きましたが違ったようです。
↓のように、止まるのは遅延を待機しているのではないかと。
ただその遅延が指定したものでなく、
おっしゃるように戻した時間が経過して戻す以前の時間+遅延になると動くようです。
もしかしたら遅延を指定しているにも関わらず、
内部で時刻を取得し直して計算しているのかとも思うのですが。
スレッド [pool-1-thread-1] (中断中)
Unsafe.park(boolean, long) 行: 使用不可 [ネイティブ・メソッド]
LockSupport.parkNanos(long) 行: 使用不可
AbstractQueuedSynchronizer$ConditionObject.awaitNanos(long) 行: 使用不可
DelayQueue<E>.take() 行: 使用不可
ScheduledThreadPoolExecutor$DelayedWorkQueue.take() 行: 使用不可
ScheduledThreadPoolExecutor$DelayedWorkQueue.take() 行: 使用不可
ScheduledThreadPoolExecutor(ThreadPoolExecutor).getTask() 行: 使用不可
ThreadPoolExecutor$Worker.run() 行: 使用不可
Thread.run() 行: 使用不可
どなたか
>>52 (
>>99 )をお願いします…
何か質問の仕方マズかったでしょうか
140 :
デフォルトの名無しさん :2008/08/14(木) 12:35:08
やっぱ"Ruby"ですよ!
>>139 1.2以前でっていう限定がきつい。
古すぎてだれも答えられないと思う。
>>141 初心者の宿題出なければ、appletを作っているやつ自体いないのでは
143 :
デフォルトの名無しさん :2008/08/14(木) 13:43:41
■■みんなでサイトつくろうぜwwwwwwwwwwwwwwww■■
「お前ら一緒にサイト作ろうぜwwwwwwwwww」
「2ちゃん越えるサイト作ろうぜwwww」
「仕事無いんだ・・・・・・」
「やろうぜ!」
「みんなでサイトつくろうぜwwwwwwwwww」
http://gacco.o0o0.jp/ http://yutori.2ch.net/test/read.cgi/news4vip/1218673130/ http://ex14.vip2ch.com/test/read.cgi/part4vip/1218612197/ 興味沸いたらきてください!
======================!! 人材募集中 !!======================
■プログラムを組んでくれる人
*サーバー側
言語はRubyかPerlの予定ですが、Perlが有力候補。
・チャット
定期的にクライアントから着信があり、それに対して更新されたチャットのメッセージを返信する程度の能力。じゃなくて機能。
通信するときのフォーマットは未定。
・ログイン・アカウント管理
ログイン認証、各アカウントの点数などの管理。データベースは未定。
・お絵描き
未定。とりあえず鯖に負担がかからない程度にたまに画像を送信してあげるって感じで
*クライアント側
はっきり言って俺もわからね。Ajaxだとかflashだとかjavaだとか。
■機能提案(正しくは人材ではなく、意見?)
「こんな機能があったら良い!」「こうするともっと楽しくなる!」などの意見募集中。
挨拶とか気にせずスレにどんどん書き込んでくれればおk
■デザイン
サイトのデザインを考えてくれる人、作ってくれる人募集中。
できればphotoshop illustrator使える人(プロジェクト共有しやすいので)
>>139 1) java.util.zip 使って外部アーカイブを読める自前の URLStreamHandler 作って、
URL.setURLStreamHandlerFactory してみるとか……
セキュリティマネージャに怒られてダメかもしれんが。
2) 1.1レベルでは互換性の高そうな標準API使う方法だと
1)のアプローチぐらいしかないので、それがダメなら
外部jar使うの諦めるか、互換性諦めるか、音出す事を諦めるか選ぶしかないと思うぞ。
145 :
デフォルトの名無しさん :2008/08/14(木) 14:20:42
たぶんwebで公開のappletじゃないと思うけど、Class.getResouceAsInputStream()とかかな。 javaのデスクトップは、アプレットに適したライブラリが全くなかった他の技術に先を越されたけど、それを補うように進化してきたから、1.2以前だといろいろ出来るわけじゃないよ。
回答ありがとうございます!
>>141 ,142,145
うーんやっぱ今時Appletでしかも1.1縛りなあたりがネックですよねぇ。
自分としては1.2以降のAPI使いたいんですが、MRJに対応しなくてはならない事情があるものでして。
無理そうなら環境によって動作切り替える方向で進めてみようと思います。
>>144 なるほど、URLStreamHandlerは今まで全く見てませんでした。
URL指定をメモリ内のByteArrayInputStreamにリダイレクトできればあるいは、のような感じですね。
光明が見えたような気がしてきました。この方向で色々トライしてみます。
147 :
デフォルトの名無しさん :2008/08/14(木) 16:47:01
ライブラリは進化してきたといってるのに、自作しちゃう人がまた一人・・
実行中にアプリから、あるインスタンスがどこから参照されているかを確認する術はあるでしょうか?
プロファイラで辿れない?
150 :
デフォルトの名無しさん :2008/08/14(木) 17:28:42
このままライブラリ、というか、部品化が進んでいったら、 やがてプログラマが必要なくなるのではなかろうか? 部品をちょちょいと選択すればプログラムができてしまわないだろうか? そのとき、元プログラマの人は、どうやって食っていくのだろうか?
>>149 稼動サーバーでのみリークが発生するようで、アプリ内で何とかしろといわれているので、
JDTとか見たんですけどまったく理解できずに断念です。
やはりツールを使用しないと無理ですかね・・・
152 :
デフォルトの名無しさん :2008/08/14(木) 17:50:19
日頃の勉強と技術力しだいだなw
153 :
デフォルトの名無しさん :2008/08/14(木) 18:06:26
Swingにベクタ画像(psとかeps)なんかを表示するものはありますか? 探しても見つからなかったので… ない場合、何らかの形でJPanel辺りに貼り付けて表示する方法はあるのでしょうか?
154 :
デフォルトの名無しさん :2008/08/14(木) 18:07:30
2chで質問するほどだなんて、ひでー職場だな。
155 :
デフォルトの名無しさん :2008/08/14(木) 18:12:13
>>154 俺の職場、それしかなかったけど。。
色々掲示板みてると俺のいた職場がよほどくそだったことがよくわかる。
ここで揶揄されてることが俺の職場ではまさにデフォルトだった。
ろくに経験もないうちから研修(実務にまったく役に立たない)と称して独力(上司は単なる営業社員)でつくらされて
現場にいっても俺みたいなど素人がもう一人。。できるわけねえだろ。。
>>110 そりゃあソースコードが複雑で読みにくいという
157 :
デフォルトの名無しさん :2008/08/14(木) 19:56:43
みんなそれでやってきたんだし、おまえの技術力が低いだけじゃね?
158 :
デフォルトの名無しさん :2008/08/14(木) 19:58:43
匿名メソッドのメリットがいまいち分からないのですが、 コーディング量が少し減ることと、 そのメソッドへ他からアクセスできないこと以外で 何かメリットってあるのでしょうか? よろしくお願いします。
匿名メソッドなんてあったっけ?
匿名クラスでした、すみません
162 :
デフォルトの名無しさん :2008/08/14(木) 20:42:09
>>155 それは職場が糞なんじゃなくて、お前が糞なんじゃないの?
なんかお前にはVBの方が向いてるような・・・
そういう話はマ板でどうぞ
164 :
デフォルトの名無しさん :2008/08/14(木) 21:44:18
相変わらず、糞だらけのスレですね(^^
>>159 ・いちいち名前を考えずに済む
・普通の内部クラスは書く場所と使う場所が離れていてわかりにくい
fileChooserを利用して、選択したクラスファイルを取得したいのですが File file = fileChooser.getSelectedFile(); Class cls = file.getClass(); これではうまくできません。 どのようにすれば良いか、どなたか教えてくれませんか?
クラスファイルをロードしたいってことか? class MyClassLoader extends ClassLoader { public Class<?> loadClassfile(File file) throws いろいろ { byte[] data = new byte[(int)file.length()]; FileInputStream in = new FileInputStream(file); new DataInputStream(in).readFully(data); in.close(); Class<?> cls = defineClass(null, data, 0, data.length); resolveClass(cls); return cls; } } という独自クラスローダを作って、 Class<?> cls = new MyClassLoader().loadClassfile(file); でどうよ
>>167 クラスを取得してコンストラクタの分析などをリフレクションを用いて実現させたいんです。
File file = fileChooser.getSelectedFile();
Class cls = Class.forName(file.toString());
とかも試したんですけどうまくいきませんでした…
なにぶん初心者なもので、根本的なことが間違ってる気がしてならないですorz
>>168 Class.forNameで渡すのはFileとかのクラスファイルの場所ではなくてクラス名そのもの。
クラスファイルをクラスパスの通っているところから参照できる場所に置いておけばクラス名から探してくれる。
クラス名がfoo.bar.Hogeならクラスパスの通っているところのサブディレクトリとしてfoo、その下にbarという
ディレクトリがあって、その中にHoge.classがあればClass.forName("foo.bar.Hoge")でClassインスタンスが得られる。
クラスパスとは無関係にクラスをロードしたいのならURLClassLoaderを使うのが楽かも。
URLClassLoaderでぐぐればサンプルはいくらでもある。
>>167 readFully(data); を使うのは単に趣味ですか?
read(data);とどう違うのかAPI Docs上から分からないんですがご存知でしょうか。
readは指定したバイト数全部を読み込むことは保証されていない 1バイトでも読めれば、読み込めたバイト数を返す readFullyは指定したバイト数全部読み込む 読み込めなければEOFException
172 :
デフォルトの名無しさん :2008/08/15(金) 05:35:43
秒妙な違いですけど、引数がFileなのでreadFullyはやらないほうがいいのでは? 間違ってはないけど、そこで使うのはDataInputの設計目的と微妙に違うような…
173 :
デフォルトの名無しさん :2008/08/15(金) 09:19:21
いつも来ていた糞野郎は死んだか?
Thread.currentThread().getStackTrace()でスタック情報が取得できますが、引数インスタンスは取得できません。 引数インスタンスを取得する方法はあるでしょうか?
>>174 caller の引数に触りたいって話ならデバッガ使えば?
176 :
デフォルトの名無しさん :2008/08/15(金) 14:05:49
糞はドブに流れていってしまったが?
177 :
デフォルトの名無しさん :2008/08/15(金) 19:18:11
テストについて質問です。 値を返すメソッドなら期待される値と実際の値を比較しますが、 値を返さないメソッドはどのようにテストをすればいいのでしょう。 DBに書き込むメソッドとかなら書き込まれた値をチェックできますが、 例えば以下のようなものです。 ・メールを送信するメソッド ・コンソールに文字を出力するメソッド
mainって普通プログラムの中でどういう部分を書くものなのでしょうか? staticだから長いプログラムを書くと面倒になる部分が多いので mainでは自分のクラスのコンストラクタをnewするくらいにしか使わなくて、 そのコンストラクタの方で色々書くようにしているのですが、どうなんでしょう?
テストの基本は事前条件と事後条件が正しいことを確認すること ・メールを送信するメソッド メールを送信するクラスが正しく呼び出されたかをチェックする ・コンソールに文字を出力するメソッド これは難しいのでやらない やる場合は、特定の文字を出力するメソッドのテストとしておいて、 Writerはsetterで設定できるようにしておく どちらにせよコード中にSystem.outがあるのはウンコ
>178 いわゆるエントリポイントってやつだから、外部から起動する時に必要な範囲の処理を行うのが正しい なので、コンストラクタの方で色々やっているのは正しいよ。 mainに書くべき処理といえば、後はプログラムの実行引数のチェックやデフォルト値の設定。 バグで落ちたときにどうするかの処理とか、そんな感じだろうな
181 :
177 :2008/08/15(金) 20:12:33
>>179 > メールを送信するクラスが正しく呼び出されたかをチェックする
これ、もうちょい詳しく解説してくれるとうれしいです。
> Writerはsetterで設定できるようにしておく
なるほど。それなら結構簡単にテストできそうですね。
>>177 テストアドレスに送信して、受信して、その内容をチェックすれば良いだけでは
>>181 方法は幾つかあるけど、インターフェイスをきってテスト用のオブジェクト(モック)でテストを実行する。
モックなんで実際にはメールを投げずに内部的なステータスを変化させるだけ
テストとしてはステータスが変わった(目的のメソッドが実行された)ことを確認する
完全にJavaMailを使っている箇所などをテストする場合は面倒だけど、EasyMockなんかを利用するしかない。
単体テストで再帰的にやるならばこんな感じ。
後は本当に動くかどうかは開発中は動作確認レベルで済ませてシステムテストでやる
ネットワークプログラミングを勉強中なのですが、 サーバ側 public static void main(String[] args){ ServerSocket ss=new ServerSocket(7777); Socket sock=ss.accept(); BufferedReader br=new BufferedReader(new InputStreamReader(sock.getInputStream())); System.out.println(br.readLine()); br.close(); sock.close(); ss.close(); } クライアント側 public static void main(String[] args){ Socket sock=new Sock(コンピュータ名,7777); BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(sock.getOutputStream)); bw.write(br.readLine()); bw.close(); br.close(); sock.close(); } この二つを実行するとサーバ側で何も表示されません。 クライアント側のBufferedReaderの件を全部消してbw.write("hoge"); とかに直すと、ちゃんとサーバ側のPCでhogeと表示されるのですが、 何がいけないのでしょうか?
closeしちゃダメだろ
JNIを使ってJavaの引数にクラスを指定し、 C側でクラス内のString型のフィールドにデータを入れようと以下のようなプログラムを書きました。 そしたら半角カナに濁点の文字が文字化けしてしまいました。 こういった場合どのように対処したらいいのでしょうか、ご教授ください! C側↓ JNIEXPORT jlong JNICALL Java_Test(JNIEnv *env, jclass, jobject obj){ jclass cs = env->GetObjectClass(obj); jfieldID fid = env->GetFieldID(cs,"strParam" , "Ljava/lang/String;"); env->SetObjectField(obj, fid, env->NewStringUTF("サブキー"); return 0; } java側↓ HogeClass hoge = new HogeClass(); Main.Test(hoge); System.out.println( new String( hoge.strParam.getBytes("iso-8859-1"), "MS932") );
UNIXの環境変数受け渡しについて 教えて下さい。 シェルスクリプトで設定した環境変数は、JAVA(jarのクラス)側で 読み取れると思いますが、その逆は可能なのでしょうか? 以下を想定しています。 もし可能なら、メソッド名とかを教えて下さい。 ----------------------------------------- #!/bin/bash export AAA=a.txt java classA -xm=512m・・・ echo KEKKA1=$KEKKA1 ←これが可能でしょうか? echo KEKKA2=$KEKKA2 ←これが可能でしょうか? ----------------------------------------- public void class cassA { String aaa = system.getenv("AAA"); String kekka1 = "data1"; ←これを返したいのです。 String kekka2 = "data2"; ←これを返したいのです。 (設定するロジックというかメソッド名・・・) } JAVA側の変数をシェルで読み取れれば良いのですが、 もし可能なら、メソッド名とか簡単でもいいのでサンプル例等を 教えて下さい。 もう泣きそうです・・(;-;)
何か良くわからんけどファイルに書き出せば良いじゃん でシェルで読み込めば
>>187 通常、子プロセスは親プロセスの環境変数を変えられない。
JDBC での Oracle との連携を勉強しようとしていたら Oracle のサイトに Java関連の Tips が大量に合って助かったのですが 逆に .NET でのサンプルが皆無だったので気になりました Oracle と Java って何か深い繋がりがあるのでしょうか? それとも Oracle が Java を一方的に支持してる感じ?
>>186 半角かな以外は化けないか確認した?
半角英数はともかく、漢字は化けると思うが。
> env->SetObjectField(obj, fid, env->NewStringUTF("サブキー");
これ UTF-8 渡してるのか?
VisualC++ とかなら env->NewString(L"サブキー", 5) とかした方が。
> new String( hoge.strParam.getBytes("iso-8859-1"), "MS932")
これやると確実に化けるんじゃね?
>186 JNI を使ってJavaクラスのパラメータをいじる方法は良く分からんですが、 半角カナというのは、どの文字符号化方式で定義されているものを使うのですかね。 String 内部は UTF-16 (char) 配列です。
a
194 :
デフォルトの名無しさん :2008/08/16(土) 11:03:24
interfaceは多重に継承できるんですけど、もしスーパー・インタフェイスと メソッド名やシグニチャがかぶったら継承できないんですか。 特に他の人が使ったインタフェイスで、 戻り値がかぶったり、戻り値がlongとかだったらどうするのでしょうか。 どうやって回避するんでしょうか?
>>194 シグニチャ同じで戻り値型違うのは無理。
シグニチャ同じで戻り値型同じなら実装できるけど、
各interface が別々の振る舞いを期待してる場合は無理。
メソッド名付ける時点で被らないように気をつけるぐらいしかないね。
>>194 インターフェースはそもそもシグネチャしか定義しない(定数定義もあるけどここでは無視)ので、多重定義になっても問題はない。
何故なら、同じ名前、同じ引数、同じ返り値を持っている、ということ以外の情報は定義されないから。
実装側で、同じシグネチャなのに異なるインターフェースでアクセスされると違う動作をしなければならない、ということであれば、それは設計が間違っている。
197 :
デフォルトの名無しさん :2008/08/16(土) 11:38:24
>>196 そういう問題じゃなくて、AppendableとStringBuffer.appendのような話をしてるんですけど…
それもjdk1.4以前だとどうやって回避してたんでしょうか。
> AppendableとStringBuffer.appendのような話 このケースって、なんか問題あんの?
199 :
デフォルトの名無しさん :2008/08/16(土) 11:48:01
jdk1.4以前
1.4以前は Appendableないから問題ないよ。
>>197 何が疑問なのかわからん。その例ってインターフェースの多重継承とは何の関係もないじゃん。
一応書いとくけど、インターフェースの多重継承って、
interfece SuperInterfaceA { int hoge(int x); }
interface SuperInterfaceB { int hoge(int x); }
interface SubInterface extends SuperInterfaceA, SuperInterfaceB {}
というものだぞ。
203 :
デフォルトの名無しさん :2008/08/16(土) 12:50:00
classと同じでinterfaceをextends出来るけど、継承」の意味が少し違うようですね。 本当は、自作のインタフェイス interface My_interface{ My_interface append(My_interface); } 例えば引数assertチェックありで、 class StringBufferも引数My_interfaceに参加させたいんですけど、 class StringBufferは当然他人が作ったライブラリなので、My_interfaceを実装できません。 今のところifで分岐してるんですけど、こういうときは、どうやれば自作インタフェイスにくわえられるんでしょうか。
204 :
デフォルトの名無しさん :2008/08/16(土) 12:52:20
例えば引数assertチェックありとかの実装で。
アダプタパターン
206 :
デフォルトの名無しさん :2008/08/16(土) 13:45:32
アダプタよりもデコレータ・パタンかな
207 :
デフォルトの名無しさん :2008/08/16(土) 13:47:28
>>200 例えばで出してみたんですけど、分かりませんか?
自作したインタフェイスの話しなんですけど・・・
なんかでラップすりゃいいじゃん
>>203 まず、Javaでは原則として既存のクラスやインターフェースに手を加えることはできない。
該当のクラスがfinalでなければ、サブクラスを作ってそこでimplementsする手はある。
該当のクラスがfinalであれば、自作のクラスでラップするしかない。
Listのキャストはエレメントを個別にキャストするしかありませんか?
generics 使えば?
どうするんですか? (List<MyClass>)list のようなキャストが失敗します。
213 :
デフォルトの名無しさん :2008/08/16(土) 16:54:48
自作したインタフェイスを使ってライブラリ作ってんるんですけど、 そこに他人が作ったクラスも参加させるのはどうするんでしょうか? とういことなんですけど、これだけじゃ何言ってるかわからないと思いませんか。
>>213 共有ライブラリとかプラグインとかリフレクションの世界のことかと思った。
215 :
デフォルトの名無しさん :2008/08/16(土) 18:33:05
class MyBig extends BigDecimal { MyBig(String v){super(v);} public MyBig abs(){return this;} } BigDecima.abs()をオーバライドしたいのですが、1.4以前ではどうやるんでしょうか。 negate()と同じく、メソッド名に意味があるので名前を変更できないので何かよい方法はないでしょうか?
eclipse の JDT を使ってみようと思ってるんですが,eclipse 上で, import org.eclipse.jdt.core.dom.*; などど打っても org.eclipse が見つかりませんというエラーが出てしまいます. どうすれば解決できますか?
>>215 1.4 だと covariant return typeが使えないから public BigDecimal abs()で我慢。
もしくはextends BigDecimalを諦める。
finalで参照型変数を宣言した場合、 それはどこを参照するかを固定するという認識で合ってますでしょうか? その場合、参照先のインスタンスの属性をsetter等を用いて変更されないようにするというのは 不可能なのでしょうか?
>>218 Immutable な拡張クラス作って属性変更できないようにするとか
不可能じゃないけど変更されないようにできる便利な言語機能はない。
Java を使って組み込み系のソフトウェア(携帯アプリ除く)を作成することはできますか?
CDC JavaTVetc
>>216 自己解決しました.
プロジェクトをプラグインプロジェクトに変更して,プラグイン依存関係を解決したらO.K.でした.
>212 キャストは動的。ジェネリクスは静的かつ、型情報は消滅。 >218 変更させたくないインスタンスは委譲でも使って隠匿すべし。
226 :
94 :2008/08/17(日) 01:12:31
94です。だいぶ前で皆さん忘れておられると思いますが、この擦れの方のおかげであの質問は解決しました。 遅くなりましたが、応えてくださった97さんや99さんなど、皆さんありがとうございます。 ・・・すいません。それだけです。
どうせならどのように解決したかを書いてくれると、後から読む人のためになって良い
スタンドアロンのJavaアプリで、HTMLのクリッカブルマップのようなことは、可能でしょうか? 具体的には、フォーム上に日本地図の画像があって、 各県をクリックすると、ポップアップウィンドウが表示される、 みたいな感じなんですが。
229 :
デフォルトの名無しさん :2008/08/17(日) 13:00:47
非常に簡単
このスレには親切な人が多いですね。たまにマ版と間違えてるような変な人もいますが・・・・
マと何か区別しなきゃいけないのか?
233 :
186 :2008/08/17(日) 21:28:01
なんとか解決したっぽいです。 初心者なので、UNICODEとUTF8の違いとかいまいちピンときませんが、 イメージは「UNICODEがIDとしたらUTF8はIDをUTF8という形式で表現したデータ」ということでしょうか? 間違ってましたら指摘してくださいorz で、UTF8での受け渡しを止めてUNICODEでの受け渡しをするようにしました C側↓ JNIEXPORT jlong JNICALL Java_Test(JNIEnv *env, jclass, jobject obj){ jclass cs = env->GetObjectClass(obj); jfieldID fid = env->GetFieldID(cs,"strParam" , "Ljava/lang/String;"); const char* cc = "サブキー"; int unicodeLength = MultiByteToWideChar(CP_ACP, 0, cc, strlen(cc), NULL, 0); WCHAR* unicodeBuffer = new WCHAR[unicodeLength]; MultiByteToWideChar(CP_ACP, 0, messagetmp, strlen(messagetmp), unicodeBuffer, unicodeLength); jstring strj = env->NewString((jchar *)unicodeBuffer,unicodeLength); env->SetObjectField(obj, fidsData, strj); return 0; } java側↓ HogeClass hoge = new HogeClass(); Main.Test(hoge); System.out.println( hoge.strParam ); ちゃんと表示できてるみたいです。 しばらくはまってたのですが、「sizeof」で文字サイズを取得してたのですが、 マルチバイト?では使えなくて「MultiByteToWideChar」を使用しないといけないということですね。今までjava言語しか触ったことないのでしたorz もっと簡単な方法ありましたら是非ご教授くださいm(__)m
>>233 wchar_t wcstr[] = L"サブキー";
jstring strj = env->NewString((jchar *)wcstr, sizeof(wcstr) / sizeof(wchar_t));
Windows環境っぽいので wchar_t が UTF-16 きめうち。
テストしてないので動かなかったらごめん。
あと new WCHAR[unicodeLength] したのに delete しなくていいんか?
>>233 いくら夏とはいえ、ちょっと見にコンパイルを通らないコードを貼るやつって、何がしたいんだろうな・・・
初心者ってのはそういうもんさ
おい、おまいらJavaでアップロードされたファイルのヘッダ検査を行なうjarはないですか? 教えてください。お願いします。
調子のんな
やっぱC#スレの方がいいわ
javaのvmって sun と ibm と hp の3種類?
Swingを使ってGUIを書いています。 所謂非矩形ウィンドウを作りたいと思い、検索してみたところ、 1. Mac限定の方法(背景色を透過色に設定?) 2. ウィンドウの下をキャプチャして疑似透過 の二つがあるらしい、ということを知りましたが、1番は問題外、 また、最前面に表示するような仕様のため、2番では背景と矛盾が 生じない為の頻繁な更新による負荷がやや重めになってしまいます。 もし他に方法がありましたら、参考URL等を教えてください。 #具体的には、Officeに出てくるうるさいイルカみたいな感じで、 #画像を枠無しで表示したいと考えています #SWTだとRegionとやらで実装できるようなのですが...
243 :
デフォルトの名無しさん :2008/08/18(月) 00:29:07
修飾子の読み方を教えて下さい Gooleしても見つかりません
そりゃ見つからないわ
245 :
241 :2008/08/18(月) 00:32:08
おぉ。どうもありがとうございます。 AWTUtilitiesとやらで非矩形や透過ウィンドウが実装出来るようになるのですね。 とりあえずはBeta使って仮実装したり、他の方法も色々工夫したりしてみながら のんびりと正式版のリリースを待つことにします。 素早いご返答、ありがとうございました。
246 :
243 :2008/08/18(月) 00:38:37
Googleの間違いでした ほんと修飾子って何て読むんですか?
おもしろい回答できないわ。 「しゅうしょくし」だよ。
jdbcのPreparedStatementなんですが、 setLongに高いインデックス(10くらい)を指定すると、 executeUpdateでエラーが発生するようです。 要は、INSERT INTO文のVALUESに指定できる?の数に制限が あるということなのですが、この問題にはどう対処したらよいでしょうか。
「しゅうしょくし」 ってか流石にこれはガチで小学生でも分かるから、 そういう意味ではなくvolatileとかstrictfpとかの読み方を聞いてるのか?
特殊なデザインのウインドウは、はっきり言って使いづらいからやめて欲しい
しゅうしょくしがしょくしゅにしか見えないんだが・・・
252 :
243 :2008/08/18(月) 01:10:03
>>247 >>249 ガチで有難うございます
ほんと何て読むか解らなくて…
年は40なんですが、趣味でプログラムでも始めてみようかと思い
創るJavaって本を買いまして、暇暇に読んでます
もちろん仕事はプログラムとは
あまり関係ありません
ただ、知識は無いと
指示が出来ないんですよね…
254 :
デフォルトの名無しさん :2008/08/18(月) 09:39:00
>>252 ではオジサン相手に手取り足取り教えてやろうか。
255 :
デフォルトの名無しさん :2008/08/18(月) 09:41:55
むしろ中途半端な知識で指示される方が迷惑
257 :
デフォルトの名無しさん :2008/08/18(月) 11:54:15
Javaなんかネットの勉強サイトで十分しょw
じゃう゛ぁ♪じゃう゛ぁ♪ じゃう゛ぁじゃう゛ぁジンジンジーン♪
259 :
デフォルトの名無しさん :2008/08/18(月) 12:07:08
ConcurrentSkipListSetってクラスつかったら プログラムを実行するたびに 同じ要素が何個も一つにセットに入ったり、一つだけ入ったりしたんだけど。 なぜですか? TreeSetにしても同じような症状でした。 でもCopyOnWriteArraySetにしたら同じ要素は一つしかありませんでした。 どうしてかおしえてください。
260 :
デフォルトの名無しさん :2008/08/18(月) 12:50:32
初心者の質問ですいませんが教えてください javaにはオペレーターは無いはずですが なぜStringクラスだけ+=が使えたりするんでしょうか どなたかおしえてください
組み込み
Instrumentを変更してMIDIを再生したいのですが、現在使用可能なSynthesizerがcom.sun.media.sound.MixerSynthだけで、そのSynthesizerでloadInstrument()してもIllegalArgumentExceptionを投げられてしまいます。 ソースを読んでみると、MixerSynthの親の抽象クラス「AbstractPlayer」にて、型のチェックでHeadspaceInstrumentの子クラスじゃないと読み込めないようにしてあるようなのです。 さらにそのHeadspaceInstrumentというのはデフォルトアクセスで、どうしようもないのです。 どのようにすればInstrumentを追加・変更できるのでしょうか?
>>260 > javaにはオペレーターは無いはずですが
Javaにはオペレータが結構あります。
Stringクラスだけでなくintでも+=が使えます。
クラス型に対するオペレータでも=や==はStringクラス以外でも使えます。
javaってcみたいにコアダンプ(メモリダンプ)できないのでしょうか。 cの場合ログから解析が難しい場合はその段階でkill -SEGVでメモリダンプしてデバッガでメモリの情報を調査するという方法があり それをjavaでもやりたいと思っているのですが。 eclipseで接続できないところなので、そこでダンプを取って持ち帰ってeclipseで確認したいと思っていますが、 cのようにいかないですかね???
java vmのコアダンプを追いかける・・・言ってみただけ
class Oya{ public void show() throws Exception{ System.out.println("oya"); } } class Ko extends Oya{ public void show(){ System.out.println("ko"); } } public class Cui{ public static void main(String args[]){ Ko a=new Ko(); Oya b=new Ko(); a.show(); b.show(); } } これでb.showでエラーが出るのが理解出来ません。 bはサブクラスでオーバーライドされた方のメソッドを呼び出しているので やっていることはa.show()と同じ気がするのですが、何ででしょう?
>>265 VisualVM とか jhat を調べてみるといいかも
>>267 Oya#show は Exception を投げると宣言しているので、
main の b.show() が投げる Exception をどうにかする必要がある
(実際には投げられないのだとしても、宣言してる以上、処理しないとだめ)
>>270 これって親のメソッドが仮に例外投げないとしたらコンパイルが通って
b.showの実行結果は「ko」になりますよね。
Oya#showはKo#showで消されているため例外投げる部分が無いものになる気がするんです。
素直にKo#showを使ったa.showは例外処理必要無いのに、
なんでOyaの参照で間接的にKo#showを使うと例外処理が必要になるんでしょう?
javaの勉強中でEclipseを使ってプログラムを作り、JSP→クラスの遷移はできるのですが、html→クラスの遷移ができません。 内容はどちらもボタンを押すとデータの送信などは行わず遷移するだけなので、どちらも同じ記述をしているのですがhtml→クラスがうまくいきません。 JSP→クラスの設定はweb.xmlで記述しているのでhtmlだとweb.xmlが読み込まれないのが原因なのではないかと思っているのですが、web.xmlが使えないとなると解決方法がわかりません。 どうすればよいのでしょうか。
>>272 そのOyaの関数がKoの関数になってるからってことを疑問にしてるんでしょ。
>>271 b が Oya 型だから b.show は単純に Oya#show の宣言を見る
Oya b = new Oya();
のときと
Oya b = new Ko();
のときで b.show のエラーの有無が変わってはかなわんし
(b は同じ Oya 型。単に初期値が違うだけ)
もし
Oya b = null; とか
Oya b = hoge(); とか
Oya b = x < 10 ? new Oya() : new Ko();
とかだったらどうするよ
>>272 ,
>>275 レスありがとうございます。
宣言はスーパークラスの方を見て中身はサブクラスを見てる感じなんですね。
オーバーライドで引数とか全部一緒だからそんなことも出来るのか。
>bはサブクラスでオーバーライドされた方のメソッドを呼び出しているので というのが分かるのは 275 が書いたように実行時なんだな。 コンパイル時は宣言した型でしか見てないんだな。
278 :
デフォルトの名無しさん :2008/08/18(月) 19:39:27
>>264 >
>>260 > > javaにはオペレーターは無いはずですが
> Javaにはオペレータが結構あります。
> Stringクラスだけでなくintでも+=が使えます。
> クラス型に対するオペレータでも=や==はStringクラス以外でも使えます。
例えば
public AnyClass{
int n;
String s;
public AnyClass()
{
n = 0;
s = null;
}
public AnyClass(int num,String str)
{
n = num;
s = str;
}
}
みたいなクラスがあったとして
下記のような動作させるにはどうすれば良いのでしょう
AnyClass obj1 = new AnyClass(10,"ab");
AnyClass obj2 = new AnyClass(1,"c");
AnyClass obj3 = new AnyClass();
obj3 = obj1 + obj2;
>>278 演算子の多重定義はサポートしてないから無理。
>278 public AnyClass plus(AnyClass other)
>>280 演算子のオーバーロードがしたいって言ってるんじゃないの?
>>260 × Javaにはオペレータは無い。
○ Javaにはオペレータのオーバーロードはできない。
で、Stringには連結オペレータが予め用意されている、と。
なぜ連結オペレータが用意されているかは設計者にでも聞いてくれ。
283 :
x :2008/08/18(月) 23:28:03
初めまして。最後のdrawLineでintを使えないといわれてしまいます。 分かる方いらっしゃいますか? よろしくお願いします。 import java.applet.Applet; import java.awt.Graphics; import java.awt.Color; import java.awt.Font; import java.math.*; /** * @param args */ public class applet5no1 extends Applet { public void paint(Graphics g) { int x1,y1,sec; sec = 30; x1= 6*sec; g.drawLine (100, 100,100+70*Math.cos(60 * Math.PI/180) , 100-70* Math.sin(60 * Math.PI/180)); } }
intが使えないから適切な型に変換しろってこと
285 :
x :2008/08/18(月) 23:33:27
すいません。具体的にはどうするかわかりますか?
>>283 sinとかcosの結果はdouble型
drawLineの引数はint型
なので型が合わない
intに変換しる
287 :
x :2008/08/18(月) 23:45:02
ありがとうございます。助かりました
288 :
x :2008/08/18(月) 23:59:08
先ほどのものです。 いろいろ試したのですが、どうしてもうまくいきません。 具体的にどうすればいいか教えてもらえませんか?
289 :
x :2008/08/19(火) 00:13:44
いろいろ試したというのは嘘で、試そうにもやり方が全く分からないので、手取り足取り教えてくれませんか。 いろいろ試したのなら、どう試したけれど、どううまくいかなかったが書けるはずなのに、 それができないから嘘がばれると思ったので正直に書きました。
お前馬鹿だろ リファレンス見るとかググるとか思いつかないのか そんなことだと永久に2chに聞きに来るつもりか?
291 :
x :2008/08/19(火) 00:20:42
リファレンスってなんですか?どこにあるのか分かりませんし、見方が分かりません。 ググろうにも何をキーワードにすればいいか全然思いつきません。 ここは初心者にきびしいネットワークですね。
293 :
デフォルトの名無しさん :2008/08/19(火) 00:33:40
実は趣味でプログラムしてます。今42歳でニーとですす。
>>291 http://java.sun.com からJava SEのリンクを辿っていけばそのうちに辿りつけますよ。
画面左上はパッケージのリスト、左下にクラスのリスト、右がメインビューワとなっております。
防御スクリーンを展開したままフェイザーと光子魚雷の準備を抜かりなきようお願いもうしあげます。
>>291 ・貴方が書いている言語はきっと“Java”
・二人も“変換”しろと言っている
いくら考えても無いところからキーワードを思いついたりしないだろうな、すでに書いてあるのに……
初心者 【人々】 (1) ・「覚えよう」と言う意思の無い人。 ・こう言う人は、永遠の初心者。 (2) ・全てをチャラにできる魔法の言葉。 ・質問をする時にこの言葉さえつければ、何を聞いても良いと勘違いしている方がいらっしゃる。 ・「初心者なら、そういう難しい事は考えずにまずは基本を覚えなさい。」と、言いたくなる事がある。 でも、お客さんだしそんな事は言えないしなぁ・・・。 某辞典から いや誰とは言わないけどね
Sun SPOTの話題はどこに持ってけばいいんでしょ?
299 :
デフォルトの名無しさん :2008/08/19(火) 00:59:36
初心者なんですけど、ジャヴァってなんですか?アップレットとどう違うんですか?
>>299 じゃう゛ぁ(java)は今をときめくニューウェーブ、時代の最先端を行く今注目のプログラミング言語です。
アプレットはIEやFF上で動作するJavaプラグインを用いた実行形態の一種です(?)
Applet/JAppletクラスを用いて作成します。
通常のJavaアプリはApplet/JAppletクラスを使いません。
301 :
デフォルトの名無しさん :2008/08/19(火) 01:18:53
アプレットでフラッシュみたいのはやんないんですか? 何でみんなフラッシュ使うんでしょうか。 初心者なんですけど、フラッシュの方が最先端な気がします。
スレの無駄だからそろそろ初心者ごっこはやめろ 誰も本気で釣られんよ
303 :
デフォルトの名無しさん :2008/08/19(火) 01:28:02
初心者だからって馬鹿にしないで下さい!
ActionScriptも多少触ったけど、言語仕様がルーズ(型の扱いとか)なのと 根っこのトコの動作が見えにくいのとでなんかやり辛いんだよなぁ マルチスレッドが普通にできないのもめんどい グラフィックやサウンド系の扱いが手軽なのと、プラットフォームの普及度から言うと よっぽど複雑な処理やるんでもなければFlashでやるのがいいでしょうね
305 :
デフォルトの名無しさん :2008/08/19(火) 10:00:45
アプレット技術はそのままで、ブラウザ埋め込みレットとしてアプレットを拡張すればいいんじゃないかと思う。 それこそアプレット・アプリケーション・フレームワークが整備されればいいのかな。スウィングと同じように。
javaのpipeってLinuxのmkfifoでできる名前付きパイプを実現するものでしょうか?
java.nio.channels.Pipe の事なら、そもそもプロセス間通信できなかったような
308 :
デフォルトの名無しさん :2008/08/19(火) 16:34:14
アプレットをいろいろといじっているのですが、ボタンを付けることについて質問です。 ボタンを押されるたびに、たとえば"A"という文字を表示するxとy座標を変えて行きたいのですが、 public void actionPerformed(ActionEvent e){ if(e.getSource() == btn){; x+=20; y+=20; repaint(); } } とすれば、g.drawpaint("A",x,y)がリペイントされて、ボタンを押されるたびにx,yが20ずつずれて表示されると思っていたのですが 最初に押したときはxとyが20ずつ動いたのですが連続してボタンを押しても変わることはありませんでした。 押すたびにずれるようにするにはどうすればいいでしょうか? よろしくお願いします。
きっと何処かで毎回xとyを0にしてるんだな
最初にボタンを押したときは動くのでx,yがリセットされていることは無いと思うのですが、 class MyFrame extends Frame implements ActionListener{ Button btn; int x = 50,y=50; public MyFrame(String title){ setTitle(title); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); } public void paint(Graphics g){ btn = new Button("ボタン"); btn.addActionListener(this); add(btn); btn.setBounds(120,200,90,30); g.drawString("A",x,y); } public void actionPerformed(ActionEvent e){ if(e.getSource() == btn){ x=x+20; y=y+20; repaint(); } } } これはフレームになっていますが、基本的にかんな感じです。
なんでpaintのたびにボタンが増えてるの・・?
すいません。ボタンが増えてました・・・paintから出したら上手く動きました。 有難うございました。
313 :
デフォルトの名無しさん :2008/08/19(火) 17:59:23
Object.classって何?
>>313 Object クラスを表す Class クラスのリテラル
new Object().getClass() と同値
315 :
デフォルトの名無しさん :2008/08/19(火) 18:52:33
メモ帳から、改行やスペースを含む文字列を読み込んで、char型の配列に入れるというものを作りたいのですが、うまくいきません。 String型の配列に入れる事は出来たのですが、Char 型に変換することができませんでした。以下は私のソースプログラムです。 public class Main{ public static void main(String[] args){ List<String[]> list =new ArrayList<String[]>(); String cell[]=new String[1000]; try{ FileReader fr =new FileReader("test.txt"); BufferdReader bf =new BufferedReader(fr); String st =null; while((st= bf.readLine())!=null){ String[] line=st.split(""); list.add(line);} for(String[] values: list){ for(String value: values){cell[i]=value;i=i+1;}} }catch(IOException e){}}}
>316 Stringオブジェクトからcharを取り出す方法があれば良いのかな > char java.lang.String.charAt(int index) それから、BufferedReader を使うと改行が消えるのでご注意あれ。
String.toCharArray()っていうそのまんまなメソッドもあるよ!
BufferedReader#read(char[] cbuf, int off, int len)じゃイカンのか
320 :
316 :2008/08/19(火) 21:23:12
ありがとうございます。アドバイスを踏まえ以下のように改良したのですが、 1行しか読み込むことができません。バッファを使っているせいかとも思ったのですが、バッファを消すとエラーになってしまいます。 public class Main{ public static void main(String[] args){ List<String[]> list =new ArrayList<String[]>(); Char cell[]=new Char[1000]; try{ FileReader fr =new FileReader("test.txt"); BufferdReader bf =new BufferedReader(fr); String st =bf.readLine(); for(int i=0;i<100;i++){ cell[i]=st.charAT(i); System.out.print(cell[i]);} }catch(IOException e){}}}
readLineを1回しか呼んでないような気がするが
322 :
320 :2008/08/19(火) 22:48:51
>>321 確かに・・そうですね・・
でも、どうすればいいでしょう・・;;
ファイル全体を1個のchar配列にすればいいのか?これでどう? BufferedReader reader = new BufferedReader(new FileReader("test.txt")); StringBuffer buffer = new StringBuffer(); int c; while ((c = reader.read()) != -1) { buffer.append((char) c); } reader.close(); char[] array = buffer.toString().toCharArray();
324 :
320 :2008/08/19(火) 23:39:07
>>323 一文字ずつを一つ一つの配列に入れたいです。100文字あったら100個の配列に入れるようなイメージです。
ソースプログラムありがとうございます。書いてある事はある程度理解できたのですが、分からないところもありました。
System.out.print(array); と加えたのですが、何も表示されず(´・ω・`)という顔をしてしまいました。
何を出力すれば良かったのでしょうか
配列はそのままprintlnしても中身は出ない System.out.println(Arrays.toString(array));
326 :
325 :2008/08/19(火) 23:48:01
って、ウソでした 試してみたら普通に出たorz test.txtの中身がないとか?
327 :
320 :2008/08/20(水) 00:00:25
何故かうまくいきません・・ よろしければソースを丸ごとコピペしたいので、貼り付けて貰えませんか? 一番最初の宣言からです。
329 :
320 :2008/08/20(水) 00:31:02
>>328 ありがとうございます。できました!
とても助かりました。
宣言のところで、いつもchar array []としていたのですが、char [] arrayも同じなんですね。
>main(String[] args) その割にはmainはちゃんと後者で書いてるのね。 いちおうこれでもいけるけど main(String args[])
二次元配列なら3通りの書き方ができるよ int[][] array; int[] array[]; int array[][];
JARファイルの中にあるJARファイルにクラスパスを通すことって可能でしょうか・・
334 :
デフォルトの名無しさん :2008/08/20(水) 01:51:38
cloneの実装の仕方について教えてください。 A-B-C のように継承関係にある場合CloneableをAにつけてそのあとどうすればいいんでしょうか? public Object cloneをAに実装し、それをB、Cでもオーバーライドする?
>>334 class A implements Coneable {
@Override
public Object clone() {
try {
return super.clone();
} catch (CloneNotSupportedException e) {
ポイントはAでsuper.clone();をしっかり呼ぶこと、浅いコピーでいいならこれだけでよい。
てかObject#clone()は仕様上シャローコピーだろ。
337 :
デフォルトの名無しさん :2008/08/20(水) 02:46:02
ディープコピーがしたいのです。 クラスBとCはどうすればいいのでしょうか?
>>337 class A implements Cloneable {
public Object clone() {
try {
A a = (A) super.clone();
// ディープコピーのための追加ロジック
return a;
B C にもディープコピーのための追加ロジックが必要なら同じようclone()をoverrideして
super.clone() をよび、それから追加ロジック。
必要ないならそのまま継承すればいい。
以前このスレッドでjavaの初心者(レベル2)向けの本として javaの教科書(SJC-P対応)的な本と、Effective Javaという本を紹介してもらいました。 教科書的な本は読み終わりましたので、次のステップに向かいたいと思います。 何か良い本があれば教えていただきたいので、よろしくお願いします。 僕の考えている弱点、問題意識としては 1:コレクションやマルチスレッド処理の仕組みはわかるが、実際の使い道がイメージできない。 →実践的なプログラムのサンプルが読みたい。 2:英語直訳のような長文は苦手で頭に入らない。 →なるべく簡潔な日本語で、図を用いて説明してもらえると有難い。 という二点があります。
340 :
デフォルトの名無しさん :2008/08/20(水) 12:20:37
ConcurrentSkipListSetっていう名前のクラスをつかったら プログラムを実行するたびに、セットは同じ要素は一つしか入らないはずなのに、 同じ要素が何個も一つにセットに入ったり、一つだけ入ったりしたんだけど。 なぜですか? TreeSetにしても同じような症状でした。 でもCopyOnWriteArraySetにしたら同じ要素は一つしかありませんでした。 どうしてかおしえてください。
>>341 再現する例はコードが長くなるので出せません。
じゃうp
秘密のコードなので出せません。
345 :
デフォルトの名無しさん :2008/08/20(水) 12:49:05
>>339 実践的なコードはWebでたくさんあるし、しかも説明つきだから自分の足使ったら?
>>345 残念ながら、現在、諸事情であまりパソコンをいじれる状態にないのです。
それから、本に線を引いたりして叩き込まないと頭に入らないタイプでして。
349 :
デフォルトの名無しさん :2008/08/20(水) 13:10:13
>>339 結局君は、わがままな教えて君とかわりないが?
350 :
デフォルトの名無しさん :2008/08/20(水) 13:12:15
>>346 平日の昼間っからパソコンいじってて、それも2ちゃんやってるし、嘘はいけないだろ。ニート君は金払って学校いけよw
自分が何が欲しいかを具体的にわかっている場合はwebが有効なのですが
初心者の毛が生えたレベルでは必要な知識のイメージが漠然としているため
あまり有効ではありません。
マックに行きたい人と、何か食べ物が食べたい人では、どちらが早く目的地にたどり着き
満足する食事を得られるかということを考えてみればわかると思います。
またwebでは目次のようなものがないか、あっても未整理である場合が多く見受けられますし
索引が利用できないのも大きなデメリットでしょう。
さらにはチェックやマークが出来ないため、再度読み直した際の効率が非常に悪い。
もっと言えば、いちいちスクロール、クリックするのが非常にめんどいという欠点もあります。
ちょっとした知識だけを得ればいい中級以上の方とちがい、全体を系統立てて学びたい初心者には
大きなストレスとなるでしょう。
なんでもwebという考え方には同意できません。
>>349 最初からわがままな教えて君のつもりですけど。
>>350 いや、正直言って無職だけどさ、パソコンあるのが実家でね。行ったり来たりなわけ。
お前は一体プログラムで何を作りたいんだ? まず目的を示してそこに向かう手段のために 本を買うわけだろ?
public class A implements Serializable { private static final Logger logger = Logger.getLogger(Aclass); } このクラスをシリアライズするとloggerもシリアライズされるでしょうか? loggerをデシリアライズするのはまずいと思うので、transientをつけるべきでしょうか?
>>352 無職だから就職のために必要な最低限の知識が欲しい。
創りたいものは漠としている。
現実的ではないかもしれないが、最終的にはひきこもり向けの学習支援アプリを創りたい。
理系科目を、直感的に操作して学習できるようなアプリがいい。
セカンドライフ的な要素も付け足してオンライン予備校にしたい。
>>339 ,345
こういう奴はキモイんだよな。なんつーか虫唾が走るっつーかwwwこういう奴はどうしたらいい?
>>355 俺向けにチェックやマークができて再読に向いていて、
自分の欠点を把握、補強できるJAVA学習支援アプリ創ったらいいと思うよ!
ほら、行った行った。
>>351 うええ。
今、実家にいて、
目の前のハコで調べられることを、調べないで、
初心者にはムリ!!!
とかいってんのか。
それなら、初心者とかじゃなくて、無能ってことじゃね?
>>357 調べられることは調べてんよ。
でも本のほうが効率いい。
webは再読に向かない。
早く教えろよ。
>>358 きみにはデザインパターンが不足してると思うから、
Java言語で学ぶデザインパターン入門
を買うといいよ。
360 :
デフォルトの名無しさん :2008/08/20(水) 14:13:56
>>351 君の相手をするのが面倒くさい
オジサンは酒飲んで黙ってろ
>>359 うわー、ありがとうございます。
早速カートに入れてきました。
公式ページも見てきましたが、僕の知らないことばかりで、非常に読むのが楽しみです。
>>359 それよりも、こいつのような30代ニートにはコミュニケーションスキルの方が先だと思うw
>>362 まだ二十代だよ。
しゃべったらボロが出るけど、しゃべらないで笑ってるからいい人扱いだぜ。
おまえらマジ役にたたねーから、俺、いつか初心者向けのJAVA学習サイト作るわ。
webはマルチスレッド、書籍はシングルスレッド。
おまえらだっていきなりwebで学んだわけじゃねーくせに。
ペッペッ!
364 :
デフォルトの名無しさん :2008/08/20(水) 14:22:24
Java言語で学ぶデザインパターン入門 とかも知らないところを見ると、PCすら使えない無能な教えて君だな。きもすぎる
365 :
デフォルトの名無しさん :2008/08/20(水) 14:24:32
あれだろ 無職で実家とか言って、「面接20社受けて全部落ちました。Orz」とかの無能ニートじゃねーの?(笑) 素直にJavaを教えてる学校いった方がいいよw
367 :
デフォルトの名無しさん :2008/08/20(水) 14:38:41
>しゃべったらボロが出るけど、しゃべらないで笑ってるからいい人扱いだぜ。 ん?十分ボロが出てるみたいだけど、どういうこと?
>>365 ブルジョワプログラマーめが。
大学の奨学金もまだまだあるのに専門行けっかよ。
それに勉強は本読んだほうが早い。
>>366 throws IOExceptionだ。
サンプル集はwebにはあるが書籍はあんまり無いな。
>>367 リアルではしゃべらないで笑ってんだよ。
俺がいると職場がなごやかになるんだぜ。
webだとボロが出るよ。俺はものの考え方がおかしいからな。
今日は
>>359 さんみたいな聖人に出会えたからいいや。
>>363 それ、単なるのけ者だよ。
まともなヤツは快活だからな。
>>368 本を読めば何とかなるって、
ヤセレばキレイになるって幻想と一緒じゃね?
371 :
デフォルトの名無しさん :2008/08/20(水) 14:53:22
質問です。 ハードウエアでいうIRQみたいなのをJAVAで実装するにはどうすればいいでしょうか? 複数のI/OコンポーネントとGUIから構成されるソフトを作っているのですが、今の実装だと 全てのクラスに中核モジュールへのレファレンスを持たせて、その内部状態をI/Oイベントがあると *I/Oモジュールから*変更させるように作っているのですが、これだと中核モジュールを変えたときに 広がる波紋が大きそうな気がして心配です。 ですから、各I/Oモジュールが何かのイベントを探知すると中核モジュールにイベントを投げて 中核モジュールのみが自らを操作するようにしたいのですが、その方法がよくわかりません。 (中核モジュールにI/Oモジュールでイベントがあったことを探知させる方法が分かりません) ExceptionをI/OやGUIモジュールから中核モジュールに投げる方法もあるかな、と思ったのですが、 例外は例外用にとっておきたいと思います。 ご教授お願いします。
無能力者なのに就職活動もしないで、まったく下地の無いプログラミングに時間を割いている時点で、 バカとしか判定しようが無いな。
>>371 「I/Oコンポーネント」と「I/Oモジュール」、「I/Oイベント」の関係がわからないな。
オブジェクト間のやり取りが変わるような部分を書き換えれば、影響するのは当たり前じゃね?
イベントでもメソッドの呼び出しでも変わらないだろ。
374 :
デフォルトの名無しさん :2008/08/20(水) 15:07:07
>>372 一見、大学の奨学金もらって頑張ってるようだけど、就職活動もしないで実家にひきこもってるただの無職ニートだろ。
自尊心が高いだけの単なるナルシストなんじゃね?
375 :
デフォルトの名無しさん :2008/08/20(水) 15:12:06
なんかここでも夏の虫が沸いてるのか?
>>373 よく考えてみたら、確かにまったく変わりませんね。
さらに考えてみたらちょっとデザインを変えるだけでまったく
解決できる問題だということも分かりました。
ありがとうございます。
ゲームばっか遣ってる無職ニートよりはましだと思うけど。
378 :
デフォルトの名無しさん :2008/08/20(水) 15:20:14
>>368 Javaを教えてる講座など申し込んで短気集中か、今の時代ならHPの方も良くまとまってるページが多いですよ。
結局は、字を読むなら本と同じですし。
変に本の方に権威を立てて過信してませんか?
MSのC#とかも初心者教育に力を入れてるし、MSDNのWeb一つでまとまってるのでお勧めです!
>>372 >>374 ペッペッ!
一時期ちゃんと働いてたっつの。
>>378 そうですねー。
無職ですから、コストパフォーマンスを考えると、どうしても講座をうける気にはなれないんです。
でも、webはお金もかからないですし、もうちょっと柔軟に考えてみるようにします。
ちょくちょく実家に来るようにしますかね。
>>378 間違ったこと書いてる本だって、一杯、出版されてるしな。
入門書なんか、見た目が派手なだけで完成してないサンプルとか、
本当にタイトルだけ奇抜なんてことも多いしな。
382 :
デフォルトの名無しさん :2008/08/20(水) 15:32:50
大学の奨学金が嘘じゃないってことよりも、学歴が三流以下の大学じゃその辺で寝てるニートとたいしてかわりないだろ。それも「ペッペッ! 」とかキモイし、こいつはリアルでキモイんだろうな
>>382 俺がリアルでキモかろうがキモくなかろうが、どうでもいいことだと思うんだが。
問題は今キモいことだけだろ。
なんでリアルまで心配してくれるんだ。
人間、学歴は関係ないよな。
俺はろくな努力もしないでマーチより上の国立大学に受かったために
無駄にプライドは高いんだが、実力は無いし、社会的なスキルはほとんどない。
でも、プログラマにはそういうやつも割といるって聞いたぜ。
あんたの同僚にもいるだろうよ。
>>383 そういうのは実装してないんだわ。
385 :
デフォルトの名無しさん :2008/08/20(水) 15:50:15
俺はろくな努力もしないでマーチより上の国立大学に受かっ
386 :
デフォルトの名無しさん :2008/08/20(水) 15:53:56
>>384 きみ、もうキモイから消えてくれないか?
大学受かったかよりも、その大学を卒業(満了)できたのかが社会では重要なんだけど。
それも君のように無能で無職なものにとってそんな肩書きは正しく「豚に真珠」じゃないか?
>>384 Javaなんか勉強するよりC#の方がMSがバックにいるし将来の為にいいよ。
そうだ!大学院目指したらどうだろう?
デザインパターンで雁字搦めにry
また夏厨か。くどいな。
>>387 ありがとうございます。
C#はJAVAの下地があったほうがわかりやすいみたいですね。
もう少しJAVAがわかるようになったら浮気するか考えてみたいと思います。
院は嫌です。僕の大学だけかもしれませんが、院に行った友人の話によると
出世争い、研究室の私物化、ゴマすり、お粗末な博士論文など、あまり魅力的に思えません。
時間も金もないですし。
せっかくアドバイスもらってのに、スイマセン。
391 :
デフォルトの名無しさん :2008/08/20(水) 16:41:33
思うんだけど、こういう人が次々とWebでJavaの説明ページ作ってんじゃないのか? それなら本なんか頼りにするよりも、間違えやすいところとかコツとかあるわけだし、手っ取り早く習得できると思うんだけど…
392 :
デフォルトの名無しさん :2008/08/20(水) 16:43:34
おまえら、くそJavaなんかやめちまえ!プログラム言語は 総じてマイクロソフトの製品じゃないとだめだ!PHPもPerlもくそ! Javaはもちろん一番くそ! おまえらにお勧めの言語はAccessVBAだ。
プログラミングとかはGPLが最高らしいよ。 Microsoftはコピーライトだから駄目らしい。 あと、楽しみが人間として一番高度らしいから、楽しみでプログラミングしている奴が 最強らしいよ。
394 :
デフォルトの名無しさん :2008/08/20(水) 16:48:12
だいたい、プログラムのすれでも、Javaスレの連中とC#スレの連中を比べると 教養の差がわかる。
395 :
デフォルトの名無しさん :2008/08/20(水) 16:49:00
だから、楽しみでAccessVBAしろ!
>>395 accessVBAはコピーレフトじゃないだろ。
>>390 そういうお前は、ひきこもり兼ニートじゃないの?
お前の魅力に関係なく、無職より院生のほうがましw
398 :
デフォルトの名無しさん :2008/08/20(水) 16:54:00
すごいですね!どこの大学卒業したんですか?やっぱり高学歴でお勉強も出来るともてるでしょ♪
自作板とかPC関連の板ってスルーできないやつ多いよね
400 :
デフォルトの名無しさん :2008/08/20(水) 17:00:00
教養の差は確かにあるけど、作るプログラムとはあまり関係ないだろ。 ソフトで言えばJavaよりVB(旧VB)の方が使いやすくて便利なのが多いんだけど…
401 :
デフォルトの名無しさん :2008/08/20(水) 17:15:22
マーチ以上の大学で援助金ももらってるとか言う嘘つきって2chによくいるよねw あまりパソコン触れないとかいいつつも、2chだけは欠かさずチャックしてるしww
フォルダを削除するコードは、以下の感じでよろしいでしょうか。 File filelist[] = folder.listFiles(); for (int i = 0; i < filelist.length; i++) { filelist[i].delete(); } folder.delete();
>>400 vbのselectは入力のチェックとか楽チンだった。
高学歴をうたってはいたが、都合いいことばかり言うカス・ニートと同じだったか・・
>>401 俺がパソコンを触れないのは、パソコンのある実家とそれ以外を行き来してるからだ。
前にさりげなく匂わしてるあるはずだが。
実家に来たら三十秒に一回ペースでにちゃんねるとチェックしているが、チャックはしてない。
>>406 オマエ、12時から張り付いてるぞ。
>>339 >339 名前:デフォルトの名無しさん[sage] 投稿日:2008/08/20(水) 12:11:55
一生駅と公園の往復でもしてろ
409 :
デフォルトの名無しさん :2008/08/20(水) 18:13:12
>>406 君はオープンソースに触れるとフリーの世界がなんとなく分かるんじゃないか?
ジャバもオープンソースだけど、君は英語ぐらい読めるんだろうから、
java.sun.com, java.net辺りから探って無料の英語の教科書を読んでみな。
それと早く自分用のパソコンぐらい買え。
心理学科とかの文系で、いくら探しても「職がないからジャヴァしてます」ってところじゃないの? なんか自分の学歴を自慢してるようだけど、何の勉強してきたんだろうねw
おまえら何でそんな表面に釣られてうだうだ言ってんのさ? 実家に行かなきゃPC無いような初学者なら 買うのは本じゃなくて、まずPCでしょ?ボロくて良いからさ いくら本読んだところで畳水練だよ?
412 :
デフォルトの名無しさん :2008/08/20(水) 18:49:45
高学歴に嫉妬する低学歴のレスの集まりですね。わかります。
PropertiesからMapに変換する一番簡単な方法を教えてください
Properties#entrySet()がそのままmapなのだけど、よくやるのはこんな感じ。 TreeMap<Object, Object> map = new TreeMap<Object, Object>(System.getProperties());
415 :
デフォルトの名無しさん :2008/08/20(水) 19:14:11
>>412 そうじゃないのよ。質問なくてヒマだから相手してるだけww
相手するのが馬鹿っぽいとは気付けないんですね、わかります
>>416 つつけばドタバタ踊るんだから、それなりに面白いよ
>>409 ありがとうございます。早速のぞいてみました。
英語は珍しい単語以外はわかりそうです。
あとは根気があれば・・・って感じですね。
>>417 レスがつくのって楽しいですよね。
レスがつく時のわくわく感に訴えるアプリが作れたらおもしろいですよね。
420 :
デフォルトの名無しさん :2008/08/20(水) 21:34:55
そいつは、もともとキモイからニートなんじゃんww
>>419 貼ったから見てやったけど、バイトなんてしちゃだめだろ。
やっぱひきこもって自宅で勉強しないとさあ。
わかってないよね、こいつ。
だいたい、「世の中、裏狙い」って・・・
ITドカタに甘い汁があると思ってんのかよw
っていうか、このスレの常連、やんでるわ。マジで。
425 :
デフォルトの名無しさん :2008/08/20(水) 22:16:20
次の高級な質問をどうぞ
ぬるぽ
427 :
デフォルトの名無しさん :2008/08/20(水) 23:03:56
ぬるぽ
ぬるぽ
Effective Javaってカス本だと思うんですが 玄人の人はどう思いますか。
>>424 せっかく時間が有り余ってるんだから、Javaなんてやらずに関数型言語やったほうがいい。
それからOO言語に移行したほうが、プログラミングの筋が良くなる。
Effective Javaってカス本だと思う方がもっとカス
カスだと思うのは自由だが、誰にとって?なぜ?を語らぬ限りは まともな返答は返ってこないだろう
そもそも、java2とか、その前を対象に書かれてるんだっけ?
>>432 内容はいいんだが、翻訳がカスだから、カス。
中級者は読み飛ばせるから気にならないだろうが、みっちり読みこなしていくと日本語のひどさに苛立つ。
多分、英語版のほうが読みやすい。
英語版を読んだとしても、まだ問題がある。 この本は「JAVA哲学」を徒然と書き綴ったものであるため 内容が前後左右にぶれてしまっている印象がある。 また、読み手をあまり意識していないので、話が抽象的になりすぎて 具体的なイメージをつかみにくい。文章がくどい。 玄人の方は読み飛ばしていると思うが 「あれ、ここ、こんなに説明いらなかったんじゃないの?」っていう部分が多かったんじゃないですか? 違いますか?
437 :
デフォルトの名無しさん :2008/08/21(木) 00:47:53
JAVA初心者です。 現在、あるWebアプリケーションの開発を開始しておりますが 下記の箇所で躓いております。 ◆任意のパスワードを生成するメソッド ・英字(大文字、小文字)、記号、数字でランダムの組合せ (使用不可の文字は後からでも修正できる) ・文字数は10文字で固定 上記のように製造したいのですが、知識不足の為 先に進めておりません。 是非皆さんの知恵をお貸し下さい。
質問です。 JavaにZIP形式の圧縮ファイル読み込みのStreamクラスがありますが、 パスワードが付いたファイルを読み込むにはどうしたらいいのでしょうかm(__)m
>>437 何に行き詰まってるのかわかりませんが、乱数使えばいいと思います。
440 :
デフォルトの名無しさん :2008/08/21(木) 00:55:07
441 :
437 :2008/08/21(木) 01:22:28
>>439 さん
返答ありがとうございます。
乱数ですか、調べてみます。
質問に不備がありすみません。
任意のパスワードを生成するメソッドの組み方自体にも躓いております…
>>441 特に強度や安全性を気にしないなら、こんな感じでいいんじゃないか
String s = "ABCDEFG............xyz!#$%&'0123456789"; // 使ってよい文字のリスト
Random r = new Random();
char[] password = new char[10];
for(int i = 0; i < 10; i++) {
password[i] = s.charAt(r.nextInt(s.length());
}
443 :
437 :2008/08/21(木) 01:47:50
>>442 さん
ありがとうございます!
参考にさせて頂きます。
別にいいっちゃいいけど一応暗号用乱数使ったほうがいいよ。
RMIのサーバー側は2つのリモートコールがほぼ同時に発生した場合並列処理になるのでしょうか? それとも1つずつの処理になり、後のものは先の終了を待つまで呼ばれないのでしょうか?
Randomをnewしてそのまま使ってはだめ
来年からプログラマとして働くことになったのですが JavaってSwingとかのGuiアプリケーションの知識身に付けて実務で使われることってありますか? それは完全に役に立たないって事は無いとは思いますが費用対効果として JSP/サーブレットとかをずっとやってた方が役に立つのかなと疑問に思いました。
>>447 就職先の業務内容次第じゃね?
どんな部所に配属されるかにもよる。
分からないなら好きな方やっとけばいいと思う。
>>447 ぶっちゃけ、Javaを使うかどうかもわからないんじゃないの?
>>448-449 すいません、レスありがとうございます。
一応研修期間中にSJC-P取得があるみたいなのでJavaは使うと思われます。
なんか市販のソフトって大概exeで、JavaのGuiアプリって使われてるのか疑問だったのです。
なんかいまいち業界事情がPCショップとかで売られてるソフトのイメージでしか判断出来ない感じあるのですが、
そのレス内容から判断すると一応使われる技術と考えてOKでしょうか。
>>450 一応言っとくけど、exeってのはWindowsで「しか」使えない実行ファイル形式だからね。(wineとかは例外)
携帯アプリならJavaでGUI操作するんじゃね。(場合/キャリア/気分に依存する)
>>445 JavaDoc の「Java RMI の仕様」の「3.2 リモートメソッド呼び出しにおけるスレッドの使用法」
を読む限り、呼び出される側は並列処理になり得ると書いてある。
なのでスレッドセーフになるようにすべきだそうだ。
453 :
デフォルトの名無しさん :2008/08/21(木) 14:28:47
SUNはデスクトップに力を入れる方針だし、これからはSwingでしょ。
>>451 ,453
そっかぁ、exeがwin依存なのは知ってたのですが、
winユーザが大半だから利益追求が絡む企業での実務では使われないものかと思ってました。
WIN32APIとか.NETと比べてJavaの方が整備されてて好きなので
swingの需要があるようで良かったです。
残りの一年こっちをやろうと思います、ありがとうございました!
いやswingの需要は無いよ
それよりWindowsプログラマならVisualC++をマスターするほうが よっぽど役に立つよ
>>457 まあ、Javaなら後からでも覚えられるし、VCは使いづらいし覚えなくちゃいけないことも多いからな・・・
ま、俺は、SwingGUIアプリでOracleと接続したやつ作ったけど、 役に立たなかったなあ。なぜかというと、SwingGUIがあまりにももっさりしていたから。だいぶ昔の話だけど。
Swingやるなら、JavaFXとかAppletとか極めれ。東京都の中で必要としているところが10箇所くらいあるから。
461 :
デフォルトの名無しさん :2008/08/21(木) 18:47:28
___ / ⌒ ⌒\ / (⌒) (⌒) \ でも、個人的にはVCの方がすきなんだお! / ///(__人__)/// \ | u. `Y⌒y'´ | \ ゙ー ′ ,/ /⌒ヽ ー‐ ィヽ / rー'ゝ 〆ヽ /,ノヾ ,> ヾ_ノ,| | ヽ〆 |´ |
462 :
デフォルトの名無しさん :2008/08/21(木) 18:49:45
/ ̄ ̄\ / _ノ \ | ( ●)(●) . | (__人__) Awtって必要ないだろ… | ` ⌒´ノ 常識的に考えて… . | } . ヽ } ヽ ノ \ / く \ \ | \ \ \ | |ヽ、二⌒)、 \
463 :
デフォルトの名無しさん :2008/08/21(木) 19:41:26
複数のスレッドをwaitさせて特定のスレッドのみnotifyで再開させたいのですが ランダムで再開というのを見ると特定のスレッドのみ再開させるというのは不可能なんでしょうか または他のメソッドで上記に似たような事をできないでしょうか まだまだ初心者なので変なことを聞いているようであればすいません ご教授よろしくお願いします
notifyAllで全部のスレッドを起こす 起きたスレッドは、呼ばれたのが自分じゃなかったら、waitで二度寝する
getKeyCodeで0を返すショートカットボタンなどは、 javaからどのボタンが押されたか判定することはできないのでしょうか?
意味不明。 Webなのか?Swingなのか?
byte a=5; byte b=6; byte c=a+b; これって3行目がc=5+6なら通るのになんでエラーになるんでしょうか? 大きいintの値を小さいbyteに入れようとするから普通は一行目からエラー だけれども、それだと面倒だからコンパイラが親切で自動でキャストしてくれるから 一二行目はエラーにならないみたいな話を本で見たので、それが行われないって話だと思うのですが、 byte+byteはint以下の数値を扱う式はintとして評価される、というルールから intになるので自動でキャストしてくれそうだと思ったのですが。
>>467 byte a=5;
byte b=6;
byte c;
c=a+b;
ってやってみたら?
変数の初期化部分で変数は使えないんだと思う。
int -> byteは縮小だから、byte a = 5; が通る方が特殊と考えれ うろ覚えだが、byte a = 999999; とかだとコンパイルエラーにならなかったか?
470 :
デフォルトの名無しさん :2008/08/21(木) 23:23:54
>>470 二項数値昇格で int型の値に昇格されるはずだから、
>>468 がコンパイルできたら言語仕様に反する。
もう少し考えろよw
473 :
468 :2008/08/21(木) 23:42:38
おれ涙目w byte a=5; byte b=6; byte c; c = (byte)(a+b); でどうだ。 今回はコンパイルも通った(gcjだけど)から、大丈夫だ。
474 :
デフォルトの名無しさん :2008/08/21(木) 23:43:39
コンパイルが通るコードが前提だろ!
475 :
468 :2008/08/21(木) 23:48:57
byte a=5; byte b=6; byte c = (byte)(a+b); なんだ、これでもうまくいくのか。 流石だなJava.
476 :
467 :2008/08/21(木) 23:50:32
レスありがとうございます。
手元の本で関連がありそうな所を漁ると、
(1)
「char(数値を格納した)、short、byteのint以下の範囲の数値を格納する型は、
たとえその型の範囲内の数値でもその式を評価すると全てintになる。」
(例)
byte a=1;
byte b=2;
a+b ←byteの範囲内でもint型
(2)
「short,char,byteのint以下の範囲の数値を格納する型に数値を格納する際、
数値はint型として評価されるが簡略化のためキャストを行わなくても
コンパイラが自動的にキャストする」
(例)
byte a=1; ←コンパイラが自動で(byte)1としてくれるので有効。
この二つの記述があり、それを踏まえてbyte a=1+2は(2)により有効なのですが、
これが467で書いたように変数で行うとコンパイラの自動キャストが働かないのが謎なのです。
もちろん
>>473 の方が書いてくれたように自分で明示的にキャストすれば通るのですが。
>>476 リテラルをキャストするのと、変数をキャストするのは意味が違うんじゃないの?
478 :
デフォルトの名無しさん :2008/08/21(木) 23:58:42
少しはググれよ
>>478 これは少しググって見つけるの難しいだろw
481 :
デフォルトの名無しさん :2008/08/22(金) 00:10:25
byte b; b = (byte)200; System.out.print(b); とすると-56と表示されるんですがなぜその値なのでしょうか? それから、longをfloatに型変換するのがなぜ拡大変換なのですか? 二つともビットは同じだと思うんですが・・・。
>>477 ,479
なるほど、ありがとうございます!
自動的な変換は制限があったのですか、、byteとかはストリームからの読み取りとかでは使ってましたが
こういう数値を足したりするのをbyteではあまりやらないので勉強になりました。
お世話になりました。
>>481 2の補数表現。
long より float の方が表現できる値の範囲が広いから。
あとビット数はfloat32bitでlongが64bit
484 :
デフォルトの名無しさん :2008/08/22(金) 00:18:48
Vista java インストールできない、.java形式で保存できない どうすればいい? 一応インストールはしたつもり
インストールできないのにインストールしたつもり??
>>481 intは32ビット。byteが16ビット。入りきらないのはちょんぎっちゃう。
32ケタあった1と0の組み合わせが無理やり16ケタにちょんぎられちゃうわけだから
変な数になっちゃう。
487 :
デフォルトの名無しさん :2008/08/22(金) 00:29:03
485さん 確実にインストールはできています。しかし コマンドプロンプトで java -versionで バージョン確認はできるのですが、javacは表示されません。
488 :
デフォルトの名無しさん :2008/08/22(金) 00:31:08
いつクビになるかいつもビクビクするよね。
489 :
482 :2008/08/22(金) 00:33:30
お世話になったので寝る前に自分からも。
>>481 Javaではダウンキャストの際に単純に上回るビットを左から削除するだけ。
200は内部的には00000000 00000000 00000000 11001000で
byteにキャストすると下8桁の11001000だけが残る。
この値は単純に見ると200だがbyteは符号付きの型なので
一番左の1bitを+-の判定に使う。
そのためこの値は二の補数で表現された-56という数と解釈される。
(全ビットを0と1反転させた後1加えると56になる。)
ちなみにbyteの格納範囲は-127〜127。
sdkを入れてないとか、sdkにパスが通ってないとか
491 :
デフォルトの名無しさん :2008/08/22(金) 00:41:29
set path + Enterで 表示されるのが 'javac' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 d:\java>set path Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\In tel\DMIX;C:\Program Files\ATI Technologies\ATI.ACE\Core-Static;C:\Program Files\ Common Files\Roxio Shared\DLLShared\;C:\Program Files\Common Files\Roxio Shared\ DLLShared\;C:\Program Files\Common Files\Roxio Shared\9.0\DLLShared\;C:\Program Files\Common Files\Sony Shared\FeliCaLibrary;C:\Program Files\Edy\Edy Library;C: \Program Files\Java\jre1.6.0_07\bin PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC d:\java>
C:\Program Files\Java\jdk1.6.0_07\bin というフォルダはないかな?そこにパスを通せ。
493 :
デフォルトの名無しさん :2008/08/22(金) 00:53:36
C:\Program Files\Java\jre1.6.0_07\binというフォルダは確かに存在します。 パスを通すとは?491で表示した、set Pathで表示されたら問題ないはずではないのですか?
よく目を凝らして jre jdk
>>493 jreじゃなくてjdk。
jreはJava Runtime Enviroment
jdkはJava Development Kit
みんな優しいな
497 :
デフォルトの名無しさん :2008/08/22(金) 01:02:17
498 :
デフォルトの名無しさん :2008/08/22(金) 01:17:33
それともインストール自体が間違っていたのですか?
>>497 そのjdkのフォルダがあるなら、ね。
なかったら、Java SE Development Kit (通称JDK)をインストールする必要がある。
500 :
デフォルトの名無しさん :2008/08/22(金) 01:20:51
501 :
デフォルトの名無しさん :2008/08/22(金) 01:23:08
これはFAQだな。 本の初めのほうに書いてある。
502 :
デフォルトの名無しさん :2008/08/22(金) 01:25:48
ちなみに会社だとXPで何も問題なくできるのに、自宅のVistaではかなりてこずっています。
>>500 JavaはC言語とかと違ってコンパイルすると中間コードが生成される。
これは君が普段使うソフトの形式であるexeと違ってコンピュータは直接実行出来ない。
これを動かすのに必要なのがJRE。
Javaで開発されたソフトを使うにはユーザはこれを入れなければならない。
逆に、ユーザは自分の環境に合ったJREを入れることで、exeと違ってMacだろうがLinuxだろうが実行出来る。
JDKっていうのは、君が書いたソースコードを中間コードにするためのもの。
javacってのはこのJDKに含まれるコマンド。
update10がRCなのか。でたら久しぶりにJDKをあげるかな
505 :
デフォルトの名無しさん :2008/08/22(金) 01:40:03
とりあえず自分のインストールあったJavaをすべてアンインストールしたら 無事コンパイルと実行ができました。HelloWorldが表示されました。 JDK 6 Update 3とJDK 6 Update 5がインストールされてたからおかしくなっていたのですかね?
506 :
デフォルトの名無しさん :2008/08/22(金) 01:56:55
w=( x==y? a : x==z? b : c ); Javaだと評価順についてはどういうカッコの付け方になるんでしょうか。
507 :
437 :2008/08/22(金) 02:15:47
任意の文字列でパスワードを作るメソッド String s = "ABCDEFG............xyz!#$%&'0123456789"; // 使ってよい文字のリスト Random r = new Random(); char[] password = new char[10]; for(int i = 0; i < 10; i++) { password[i] = s.charAt(r.nextInt(s.length()); } 使ってよい文字に条件を付けたいのですが、 英字大文字、英字小文字、数字、記号の各文字種を、 必ず一文字は結果に出せるようにしたいです。 例:An?)9j1aQ0 各文字種ごとに変数を作る事になると思いますが、 その先の記述をどうしたら良いかで悩んでおります。 各文字種を配列に入れてからシャッフルするとか、ですかね? 大変お手数ですが、皆さんの知恵をお借りしたいです。 宜しくお願いいたします。
>>507 1. 最初に各文字種をパスワードに1文字ずつ追加する。
2. 不足文字数分をパスワードに追加する。
3. パスワードをシャッフル。
>>463 CountDownLatch でも使え。
>>480 ぐぐるまでもなく、言語仕様読めば解決。
要するに読んでないだけ。
>>507 それJavaとか関係ない段階の質問だと思うんだけど。
>>510 スレタイ読める?
ていうかお前のレスの方がスレ違いなんだよカス
>>511 こんなバカが回答ほしがってるのかw
寝言は
>>1 ぐらい読んでから言えクズw
513 :
デフォルトの名無しさん :2008/08/22(金) 11:14:33
いろんなスレで暗号・パスワード聞いている奴いるからそいつだろ。 こういうカスが作ったゴミ暗号なんか、どうせ作ってもすぐ解読されるからほっとけ。
>507 ランダムで生成し、生成した文字列に対して文字種ごとに存在をチェックすればOK 全種類が入ってなければ再生成。 この手の乱数による抽出では出現率の偏りに注意しましょう。 まあ、全種類が必ず入ってる時点である種の偏りがあるわけだが...
すごく単純な質問ですみません コマンドプロンプトでひらがな入力をするには、どうすればいいのでしょうか
スレ違い
すみません、自己解決しましたOrz 昔は、こうやって変換してたんですね
そういえばいつからだろうか日本語入力切り替えにalt押さなくなったのは・・・。
520 :
デフォルトの名無しさん :2008/08/22(金) 17:55:52
すみません。相談です。 僕は、人見知りの臆病者なんですが、性欲は人一倍あります。 いつも暇があるとエロいことばかり考えてしまいます。見てはいけないと思いつつも エロサイトをしょっちゅうのぞいてしまいます。余計、エロくなります。。 職場でも町でも、女の人と顔があうと絶対エロいにやけ顔になってしまいます。 職場の人から「うわ〜、○○さん、いやらしい顔してる〜」とかいわれて、しょっちゅう胃がいたくなります。 まじめな顔をしようと思ってもにやけ顔になってしまいます。。 ほんとに苦痛でしょうがないです。どうしたらいいでしょうか?
switchステートメント使ったプログラム見たとき便利だなぁと思ったんですが 講義中に「これあんまり使わない」みたいな事を言われました。 その先生だけかもしれませんが、なぜでしょうか? 構文が気持ち悪いとか、if使えばいいから とかしか思いつかないんですが。 まさか「これ(お前ら程度のレベルでは)あんまり使わない」って事だったんですかね。
523 :
520 :2008/08/22(金) 17:59:23
いっそのこと女性がこの世からいなくなればいいとさえ思ってしまいます。
はいはい
525 :
520 :2008/08/22(金) 18:04:15
皆さんは、エロイ事とか想像しないんですか?
>>522 オブジェクト指向を極めればswitchなど使わなくなる
>>522 一般論としては「使わないほうがいい」ということはない。
その言葉の前にいろいろ前提がなかったかな?
クラスの説明中ならswitchより多態(ポリモーフィズム)をということかもしれない。
528 :
520 :2008/08/22(金) 18:08:27
このままでは、セクハラの指導をうけなければなりません。それこそ一社中の恥になってしまいます。 また、どうしても見てしまうので、指導を受けたからといって治るものでもありません。 どうしたらいいんでしょうか?
>>522 その先生の意図はわからんけど、switchが適切な場面で必ずswitchを使
うようにしても、ifに比べたら頻度はものすごく少ないと思う。
>>528 悩んだらソープへ行け!って偉い人が言ってた。
>>522 絶対使うなってわけじゃないが、今後分岐が増えていく予定がすこしでもあるなら
switch 以外の方法を使ったほうが保守性が高いので。
えー、switchの方が保守性は高そうだけどな。 あるCの入門書で、continueの説明に「めったに使われない」と書いてあって、 釈然としなかった経験がある。 初学者に教える時に、教師個人の余計な感想は邪魔かも。
532 :
522 :2008/08/22(金) 20:14:56
なるほど。もしかするとその先生の主観が入った意見だったのかもしれません。
また次の講義で質問してみますね。
>>528 朝起きていっぺんぬいてから出勤するっていう人の書き込みをみたことがあります。
その人によると、明鏡止水だそうです。
>>522 古いバージョンだと、switchの判定式に整数しか使えなかったから
その名残では
Stringのswitchは7で導入予定なんだよな? ほしいー
>>531 switchを使ってる場合、例えば、
switch (obj.type) {
case A: 処理a(obj); break;
case B: 処理b(obj); break;
}
こうなるが、typeの種類が増えると、obj.typeで判定している部分をかたっぱしから直してまわらんといかん。
typeで分類する代わりにクラスで分類し、各処理をオーバーライドしたメソッドで定義すると、そもそもswitch等で分岐する必要がなくなる。
obj.処理();
だけでおk。種類が増えたときも、呼び出し側はほとんど変更する必要がない。
オブジェクト指向言語の最大の利点は、「お前は誰だ」と確認するためのifやswitchを書かなくて済むようになること。
Stringのswitchが有効なケースってあんまりなくね? enum使えば解決じゃない?
ジャバザハット
enum 導入のおかげでたまにはswitchを思い出すようになりました
今Windows上で二つのシステムがあって、 C++クライアント −DCOM→ MTS(スレッド管理・トランザクション管理) → SQLServer or MSMQ と C#クライアント -.NETリモーティング→ 独自サーバ → SQLServer or MSMQ というシステムがあるのですが、これをクライアント以外Javaに置き換えたいです。 どのようなアプリケーションが代用になるのでしょうか?また、クライアントだけ Windows上のC++ or C#とした場合、サーバのJavaとの接続はできるのでしょうか?
String の switch は main() に渡されたオプションの解析とかに使えそう
そうそう。そんな感じで使いたい。 それってやるとしたらequalsの展開になるのかな? それとも個数によっちゃTreeMapかなんかで実装するのかな わくわくだわー
543 :
481 :2008/08/22(金) 23:05:51
544 :
デフォルトの名無しさん :2008/08/22(金) 23:24:38
皆さんに質問です。 ここにいらっしゃるのは殆どがJAVAをある程度学ばれている方だと思いますが、 これまで培ってきたJAVA関連の知識や技術が3日後には全て消え失せるとします。 もう一度初めから学び直さなければなりません。 あなたに与えられた期間は半年です。 半年経てばJAVAプログラマの新入社員として働いていかなければなりません。 ただ、今のあなたが3日後のあなたに一つだけ残せるものがあります。 それは今のあなたの考えるJAVA学習の方法論です。 どう勉強するべきかどの本で勉強するべきか・・・。 その半年間の予定表を立てて下さい。 では私はもうこれで寝ますので3日後くらいまでにはご回答をお願いします。
言語仕様を確認して、ライブラリリファレンスを確認して、実際にモノを作ってみる 半年もあればだいたい大丈夫だろ やる気さえあれば ← これ1番重要
Javaなんて簡単すぎて半年もいらん
オブジェクト指向の方法論とかの知識も 全く無い状況からだとすれば、仕様を覚えてから使えるようになるまでには ある程度かかるだろうとは思う
簡単すぎて半年もいらん(笑)
>>544 まあ、数年放置してるといつのまにかバージョンが上がったり、
使ってたメソッドが推奨されないメソッドに認定されてたりするから、
似たような状況はたまにあるね。
勉強?要らない要らない。
せっかく忘れたんだから他の言語勉強する。
550 :
デフォルトの名無しさん :2008/08/23(土) 01:11:44
今日は大漁だwww(でも雑魚ばっかw)
>>544 Java関連の知識って、どこまでよ?
フレームワーク?イディオム?ライブラリの知識?言語仕様?
それともオブジェクト指向って何?って所まで消えるのか?
変数って何ですか?、とか、インターネットってどういう仕組み?とか
コンピュータって何ですか?まで行っちゃうとか
そこが分からないと答えようがない
コンピュータって何ですか?まで行っちゃったら 多分この業界で仕事しようと思わないとおもわれ
553 :
デフォルトの名無しさん :2008/08/23(土) 03:36:09
544は 魔法使い
554 :
540 :2008/08/23(土) 05:58:25
すみません。 ここには下流工程の人しかいないですよね 板違いでした
555 :
デフォルトの名無しさん :2008/08/23(土) 07:15:48
はいそうです。どうせどこで聞いても答えてもらえないでしょうが もうここには決して来ないで下さい。
>>540 「付けたし付けたしで今まで頑張ってました」って感じだなw
スルー白
558 :
540 :2008/08/23(土) 07:31:49
答えられないなら黙ってろって 数十万の顧客抱えてるから今すぐJavaに移行なんて無理だから、試してみただけだしw
559 :
デフォルトの名無しさん :2008/08/23(土) 07:39:53
SAXを用いてXML文書から文字列を取得する勉強をしています。 イベントハンドラで "<" を含む文字列を取得しようとしているのですが "<" がタグ開始の文字列として認識されてしまいエラーが発生してしまいます。 どなたか解決法をご存知でしたらご教授下さい。お願いします。
561 :
デフォルトの名無しさん :2008/08/23(土) 07:44:48
>>558 もう君の自慢話しはいいからwwさっさと消えてくれないか?
562 :
デフォルトの名無しさん :2008/08/23(土) 07:49:11
>Windows上のC++ or C#とした場合、サーバのJavaとの接続はできるのでしょうか? 質問が抽象的すぎてイマイチ分かり辛いんですけど、WindowsならMS製品で固めた方がいいですよ。
563 :
デフォルトの名無しさん :2008/08/23(土) 08:05:37
>>540みたいな生意気な奴は相手にすんなよ。その辺の雑魚と大して変わらないからw
564 :
デフォルトの名無しさん :2008/08/23(土) 08:19:13
540、血圧上がってますよ? w書いててわらってもうたw
565 :
564 :2008/08/23(土) 08:21:57
>>540 みてみたけどたいしたことじゃないなw
HTTPも知らないのか540はw
566 :
540 :2008/08/23(土) 08:25:46
う〜ん、まじめにmixiとかAmazonとかじゃなくて、数秒遅れたら致命傷になるような システム作ってる奴いるか?今のシステムに不満はないんだけど、OSがWindowsって ところだけは、顧客は拒否反応示すからさ。 ロジックは簡単だから、Javaはよくしらないけど、定番のアプリケーションサーバ とデータベースとMQでシステムをリプレイス出来たら、そういう顧客にも有効かと 思ってさ。
567 :
540 :2008/08/23(土) 08:26:44
>>565 Webサービスだよね?あれだと遅すぎて駄目なんだわ
568 :
デフォルトの名無しさん :2008/08/23(土) 08:27:29
彼は病院にお帰りなったそうですOrrz
>>566 それならwindows一筋で頑張ってください
570 :
970 :2008/08/23(土) 08:43:59
パフォーマンスを重視したいのか改造コストを低く抑えたいのかわからんな。 クライアントはどのくらいいじっていいのよ? いっそDCOM−CORBAブリッジでも使うかい。
572 :
540 :2008/08/23(土) 08:51:26
>>570 登りは.NetRemotingで下り(配信)はTCP/UDP直だよ
昔はDCOMだったけど
それにしても、Webサービスは遅すぎる。発注だそうと思ったときにはもう
相場変わってるっちゅうの
LANで計測しても、独自プロトコルの10倍以上通信してるからな
573 :
970 :2008/08/23(土) 08:52:25
ちょっと見てみたけどクライアントとjavaで通信できそうな気が。
574 :
デフォルトの名無しさん :2008/08/23(土) 08:53:01
全部TCP/UDPにしたらいいと思うよ。
575 :
970 :2008/08/23(土) 08:54:29
独自プロトコルって、危ない気がするけどいいの? なんか大切なデータ送ってそうだけど。
576 :
540 :2008/08/23(土) 08:54:43
>>571 ありがとうございます。
開発コストは考えてません。営業がそれなりの金額で売ってきてくれるので。
重視してるのは、クライアント(C#)-サーバ(Javaサーブレット)で今までの
パフォーマンスが出るのかですね。
で、それにともなってJavaの混沌としているアプリケーションサーバとデータベース
とその他諸々からどれを選択していいのかと
クライアントサーバー間はLAN/WANの類なのかインターネットなのか、 インターネットだとCOM+やCORBAやRMI(IIOP)はプロトコル的にきつい気もするが。
HTTPが遅いってどゆこと、通信って一往復だよね? 毎回コネクション張るのが問題?
そらHTTP自体がオーバーヘッド比較的でかいし、 その上でWebサービスとか使えば遅いわな。
>>580 うーん。わかんね。ヘッダーとかがあるからってこと?
自分でTCPで通信するのとそんなに大差あるのかな?
HTTPサーバーが遅いってこと?
それなら自分で作ったHTTPサーバーが例えばIISのパフォーマンスを
超えられるの?
>>559 そもそもXML文書のタグ以外に<>を含めてはダメだろ。
&lt;か&gt;に書き換えるべきじゃね。
>>566 >数秒遅れたら致命傷
まず初めに専用回線を引くべきじゃね?
OS関係無いと思うし、そんな性能を求められるところってほいほいリプレイスしない方がいいと思う。
584 :
559 :2008/08/23(土) 10:42:44
>>582 解決できました。ありがとうございます。助かりました。
540はろくに知識がないため大失敗する悪寒
587 :
デフォルトの名無しさん :2008/08/23(土) 12:03:30
OutOfMemoryを捕まえたいんですけど、 GUIの部品使うと別スレッドが色々たってるみたいで try〜catch で拾えないんですけど、 どうにもならないんですかね?
>>587 Thread#setDefaultUncaughtExceptionHandler
Thread#setUncaughtExceptionHandler
で捕まえるとか。
589 :
587 :2008/08/23(土) 13:50:14
おお、こういうのあるんですね。 ありがとうございました。
CLDCにもThread#setDefaultUncaughtExceptionHandler Thread#setUncaughtExceptionHandler がほしいぜ。
javaの暗号・復号化でJCEなるものがあることがわかったのですが、 ファイルを読み込みバイト配列で一括変換しているせいかメモリ不足に陥ってしまいます。 元ファイルをInputStreamに出力ファイルをOutputStreamにと ダイレクトに暗号化する方法ってないのでしょうか。 8kbyteといった固定単位でファイルを読み込み、暗号化して暗号化後のサイズとデータを書き込みことで、メモリ不足を引き起こさず暗号・復号化は出来そうですが・・
592 :
591 :2008/08/23(土) 14:54:36
自己解決しました FileInputStreamにCipherInputStreamをラップしたら出来ました。 m(__)m
593 :
デフォルトの名無しさん :2008/08/23(土) 16:06:43
だから
>>540 はアホだって言っておいただろ。見て分からなかったんなら、お前ら鈍いな。
TCP/UDPってなんだよwボロでてんだよww
それもTCP遅いって、確かにTCPとUDPを上回る通信はあるけど、
こいつはMS一筋でよっぽど世の中知らない奴だと思わない?
お前はもう来るな
うさんくさい奴だったな
WebアプリやTCPを使って発注すると、(相場が変わるとか何とかの理由で)遅いって、どういう業界というかどの職種でそんなことが起こるんですか?
596 :
デフォルトの名無しさん :2008/08/23(土) 17:07:43
あ でも最近の証券会社やFXの会社の発注少し遅いよね
597 :
デフォルトの名無しさん :2008/08/23(土) 18:33:25
そんなコンマ1秒を争う世界とか限界に挑戦するような世界はwindowsでやってくれw
598 :
デフォルトの名無しさん :2008/08/23(土) 18:52:28
599 :
デフォルトの名無しさん :2008/08/23(土) 18:59:29
CABOSをダウンロードしたのですが開いたら 「JAVAソフトウェアがロードできません」と出ました JAVAのサイトに行ってダウンロードすると「JAVAのバージョン確認」と出るだけで 何も状況が変わりません 誰かいいアドバイスをください
tmp == "(" tmp.charAt(0)=="(".charAt(0) tmp.length()=="(".length() が上からfalse.true.trueとなるんだがバグかなんか?
ん? 正しい動作だわ、そりゃ 詳しく知りたきゃ、equalsでググれ
602 :
デフォルトの名無しさん :2008/08/23(土) 19:08:49
激安ノートパソコンでJAVA勉強できますか?
603 :
599 :2008/08/23(土) 19:13:45
HELP
今年最大の夏を感じるな
520=599
>>602 JDKの動作要件を満たしていればできる。
>>602 高性能PCじゃないとeclipse動かないよ
>>600 仕事で1年間Javaを使って開発してる奴にこの前
if( strHoge == "true" ) で 同じにならないんだけど
って質問来た時はマジで、はぁぁお前1年間Java使っといてそれはないだろう!って思ったよ。
それ以降、漏れはそいつのこなす仕事は何一つ信用しなくなったよ・・orz
1年間Java使ってましたっていう自己申告じゃなく、ホントに1年間開発してたんだよ・・どんなソース書いていたんだか・・
HTTPはパフォーマンス(応答性)優先のプロトコルじゃないからな。 あまり細かいこと考えずに作ると、 プロキシの検索が走ったり Expect-100で一往復待ったり 設定によってはKeepAlive使わずに毎回接続したり その上でWebサービスとなると SOAPエンコードでかなりサイズが膨れ上がり XMLのシリアライズ、デシリアライズ等々割と重い処理が入る
610 :
デフォルトの名無しさん :2008/08/23(土) 21:07:22
あなたのそれは、そんなに凄いアプリ(システム)なんですか?
もう相手にするなよ。どうせ何も作れずに知ったか知識並べてるようなニーとだし、そういうやつは2chによくいるだろw 最近の夏だと大ほらふきが出没しているから、たぶんそいつだろうw それと嘘はだめだ。一生信用されない。
>>580 =
>>609 だが
俺は単に横槍っていうかHTTPとWebサービスの一般的な話してるだけで
元のやつととは全然関係ないんだが、それでもこれは俺が突っ込まれてるのか??
それじゃ、そんなに凄いシステムなんですか?
意味が分かりません><
>>551 コンピュータって何ですかレベルだとしたらどうでしょう?
無理でしょうか?
パソコンを使って遊ぶことが出来る(YouTube見たり、共有ソフトでファイル集めたり、
集めたファイルを扱ったり・・・でもフォルダなら分るけどディレクトリだと難しく感じるレベル)けど、
仕組みはさっぱり分らないというレベル。
HTTPってそう言えば何の略?みたいなレベルだとして。
情報系の大学の学部を出てるわけでも、専門学校を出てるわけでもなく、
普通の私立の文科系を卒業してる程度の人間だと仮定すると絶望的???
「JAVAプログラマの新入社員」程度なら無理じゃないでしょ ゼロから初めて半年でも
>>615 まあ、あくまで一例だが、
知っている情報系の中小企業だと、Excelしか使ったことの無い文系の新卒でも、3ヶ月で基本情報処理技術者が取れるように訓練される。
無論、当人の努力も大事だし、実際の試験で落第したなら、合格するまで昇給をストップされる。
IBMへ行った先輩の話だと、文系も理系もなく新人研修でしごかれるらしいな C言語は2日で終わってC++を1週間、Java、Web、DBと容赦なく進むスケジュール表を事前に渡されるので 研修開始までに独習して一通りマスターしておくのが普通らしいな
String#equalsはjavaで真っ先に覚える部類だろ。 基本情報処理技術者って落ちる奴居るのか?
リフレクションに関する質問です。 interface Hoge {} class HogeImpl implements Hoge{} 現在Hoge.classのみがあって(Hogeのインスタンスは存在しない)、HogeImplがHogeを継承しているかどうかを調べる方法はあるのでしょうか? Hogeのインスタンスが存在しているのであれば Hoge.class.isInstance(hogeImplInstance); で確認できるのですが、Classのみでの確認手段が分かりませんでした。 newInstanceでインスタンス作って確認するしかないのでしょうか?
今ちょっと見ただけだけどisAssignableFromとかあるじゃん
HogeImpl.class.getInterfaces てかClassのJavaDoc読んだ? あと、それを確認しなければならない状態があるのかよ。 Hoge hoge = new HogeImpl(); と書けばコンパイルエラーになるだろ、implしてなければ
>>620 Class#isAssignableFrom(Class)
あったんですね。迅速な回答ありがとうございます。
>>622 一通り読んだつもりだったのですが読み落としてました。
本当に申し訳ないです。
>>618 C言語2日って、それならやらない方がマシじゃねかw
こんな連中しかいないからWacsなんていう糞フレームワークしか作れないんだな(ワラ
>C言語は2日で終わってC++を1週間 どう考えても無謀だしな。
いいかげん嘘つきの相手なんかすん
以下のURLのような、図をプログラムで解析するようなプログラミングの問題で
http://www.i.u-tokyo.ac.jp/edu/course/ci/pdf/2007_8_ci_practice_all.pdf (沢山ある、それぞれの頂点が辺で結ばれていたり、いなかったりする)
私は、2次元配列を用いて、cell[結合元の番号][結合先の番号]=0or1のようにして表して解こうとしたのですが、
なかなかうまくいきません。このような問題の本流というか、良いやり方はどのようなものでしょうか?
また、上記urlの問題の最後の方にある頂点から別の頂点への距離を求めるものがあるのですが、
私には遺伝的アルゴリズムを用いた手法しか思い浮かびません。しかし、大学院入試のプログラミング問題程度で
そのようなものが要求されるのは考えにくいので、私が何か見落としている気がします。
問題の解釈すら違うかもしれません。どのようなレスでもいいので、お願い致します。
>>629 すまん。
まったくわからん。
ただ、おれにわかるのはスレ違いということくらい。
631 :
デフォルトの名無しさん :2008/08/24(日) 02:32:43
良いやり方というのは特にありません たぶんお勉強にこだわりすぎなんじゃないですか?
>>629 Q2-1はつながってる先を順に調べて、ツリー状に調べてゆくってことかな?
Q4は、
辺を追加していく順序に就いて悩んでいるのだろうけど、
冒頭に、「N は変えるが同じ頂点対の並びを利用する. その場合, N 番目以降の頂点対は無視する.」ってあるから、
G3は単にファイル上の登場順にN番目までの辺で出来たグラフ。
残りもその順で追加して行くだけでは?
IBM Javaで暗号化してSun Javaで復号化すると IBM Javaのクラスが見つかりませんとエラーが発生しました。 java.lang.ClassNotFoundException: com.ibm.crypto.provider.DESKey 暗号化キーは、シリアライズ化してあったものをObjectInputStreamでよみこもうとした時に上記エラーが発生しました。 回避策わかる方いますでしょうかm(__)m
634 :
633 :2008/08/24(日) 03:58:06
Objectをシリアライズせず、キーのデータのみ受け渡しすれば 異なるVM間で復号化できましたm(__)m
VM実装依存のクラスつかってりゃClassNotFoundExceptionでるだろ。馬鹿か?
RMIのリモートオブジェクトに対して、new Socket().isConnected()に当たるようなコネクションの確認はできるでしょうか?
javac <ファイル名>.java は出来たのですが、 その次にファイルを実行出来ません。 どうすればいいでしょうか?
638 :
デフォルトの名無しさん :2008/08/24(日) 17:41:14
639 :
デフォルトの名無しさん :2008/08/24(日) 18:53:41
JavaEEのパフォーマンスチューニングの相談もここでOKですか?
同じバージョンのJREをつんだ違うOSで、同じbeanをシリアライズしたバイトデータの中身はまったく同じなのでしょうか?
バージョン違えばそりゃ違うんじゃね?
642 :
デフォルトの名無しさん :2008/08/24(日) 23:39:58
Javaの勉強を最近始めた超初心者です。 勉強してる中でパッケージの内容からどうしても先に勧めません。 あるプログラムの頭にpackage パッケージ名;と打ち込んだのですが、 "予想されたパッケージと一致しません"と言われうまく起動してくれません。 どういった名前を付ければ予想されたパッケージになるのでしょうか。。 教えてください。。
>>642 パッケージが「package foo;」だったら、そのソースファイルはfooディ
レクトリの中にある必要がある、のが原因かもしれない。
画像をFlowLayoutパネルに流したいのですが FlowPanel.add(Image)は対応していないのでImageIconを作って画像を入れようと色々やっているのですが上手く行きません。 Toolkit tk = Toolkit.getDefaultToolkit(); Image img = tk.getImage("C:\\~~.jpg"); ImageIcon icon = new ImageIcon(img); JLabel label = new JLabel(icon); こんな感じでラベルをつくってレイアウトに流し込んでいるのですが・・・
>>644 ImageIconには画像ファイルのパスを引数にとるコンストラクタがあるから
ファイルから画像を読み込んでJLabelのアイコンに設定するならImageを作らなくても
JLabel label = new JLabel(new ImageIcon("C:\\~~.jpg"));
でいけるよ
もう頭パニック助けて・・・ 下記のコードでdをcのListに値を入れるのってどうやればいいんですか? import java.util.*; public class bbb{ public static void main(String [] args){ List <aaa> c = null; aaa d = null; d.setNo(1); d.setName("test"); c.add(d); System.out.println(c.get(0).getNo()); System.out.println(c.get(0).getName()); } } class aaa { int no; String name; public aaa(){ } public int getNo(){ return no;} public void setNo(int newNo){no = newNo;} public String getName(){return name;} public void setName(String newName){ name = newName;} }
>>646 List <aaa> c = new ArrayList<aaa>();
aaa d = new aaa();
>>647 new 試したけどいまいち書き方がわかりませんでした。
ありがとうございました。
現在Javaで動画を扱おうと試行錯誤していますが、いまいちできるかどうかもわからない状態です。 機能的には、デスクトップをプログラムでキャプチャしてそのままAVIなどの動画に変換して出力したいのですが、 Java言語ではどのようにすれば可能なんでしょうか?
>>649 Vectorから適当なスクリーンキャプチャをダウンロード・インストールして、
Javaサイドから定期的に呼び出す。
というのではいけませんか?
651 :
デフォルトの名無しさん :2008/08/25(月) 16:45:13
JAIについて質問です。 JAI入門書のサンプルプログラムをコンパイルすると下のようなエラーが出ます。 パッケージ javax.media.jai は存在しません。 JAIもJDKのPathの設定のようなものがいるのでしょうか?
>>651 ですが
どう設定すればいいか教えてください。おねがいします
>>653 入門書なら設定の仕方とかは書いていると思いますよ。
もし書いていないならその本は捨てても構わないと思いますよ。
オプションパッケージはインスコするかバンドルするかってちゃんとjavadocに書いてあるだろうがjavadoc嫁。 それにオプションパッケージのreadmeにも書いてある。 JMFのインストーラ版なら決め打ちで勝手にパス通すが。
一週間くらい前に、デザインパターン入門の本を教えてくれた人、マジありがとうございます。 いい本ですね。
どのあたりがいい本なのか書かないと
そもそもどの本だ?
文章が読みやすい 例が簡潔でわかりやすい 細かいフォローもばっちり デザインパターンをそれぞれ関係づけてあって覚えやすい 基礎から実践に近づくために必要な知識が効率的に吸収できます。
660 :
デフォルトの名無しさん :2008/08/25(月) 22:42:54
教えてくれた人にだけわかればいいから質問してくんなよ。ケッ。
661 :
デフォルトの名無しさん :2008/08/26(火) 00:16:44
その本を超えるようなホームページを作ってください!
下記のXMLで、key1とval1を出力したいのですが、 取得の仕方がイマイチ分かりません。 いろいろ試したのですが、コンパイルとかエラーになって・・・ どなたか、取得の仕方を教えて下さい。 -----------[testXml.xml]------------------------------------ <?xml version="1.0" encoding="UTF-8"?> <config> <ptn1_data1> <element key="a1" val="a01"/> <element key="a2" val="a02"/> </ptn1_data1> <ptn2_data2> <element key="x1" val="x01"/> <element key="x2" val="x02"/> </ptn2_data2> </config> --------------------------------------------------------
import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; class testXml { public static void main(String args[]) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new FileInputStream("testXml.xml")); Element root = doc.getDocumentElement(); walk(root); }
public static void walk(Node n) { for(Node ch = n.getFirstChild(); ch != null; ch = ch.getNextSibling()){ if(ch.getNodeType() == Node.ELEMENT_NODE){ System.out.println("ELEMENT_NODE:"+ch.getNodeName()); walk(ch); } else if(ch.getNodeType() == Node.TEXT_NODE && ch.getNodeValue().trim().length() != 0){ System.out.println(" TEXT_NODE:"+ch.getNodeValue()); } else { System.out.println( ・・・・key1を出力したいです); System.out.println( ・・・・valを出力したいです); } } } }
長く書いてしまってごめんなさい。 けど、どなたか教えて下さい。 お願いします
>>662 Document doc = db.parse(in);
NodeList l = doc.getElementsByTagName("element");
if (null == l) {
System.out.println("タグ element はありません。");
} else {
System.out.printf("タグ element は %d 個あります。\n", l.getLength());
for (int i = 0; i < l.getLength(); ++i) {
NamedNodeMap n = l.item(i).getAttributes();
System.out.printf("\t[key=%s],[val=%s]\n"
, n.getNamedItem("key").getNodeValue()
, n.getNamedItem("val").getNodeValue());
}
}
それ以前にxmlの設計が腐ってる。 xmlスレ行って出直して来い。
>>662 普通はこんなかんじ。
indexはいらんかも。
<config>
<ptn_data index="1">
略
</ptn_data>
<ptn_data index="2">
略
</ptn_data>
</config>
670 :
デフォルトの名無しさん :2008/08/27(水) 07:37:12
すいませんが教えてください。 自分で作った実行ファイルがあります(文字コードMS932)→Test.class これをbatファイル(文字コードEUC-JP)で実行します。 batファイルの中身は java Test 日本語パラメータ で、batファイル自体は文字コードEUC-JPです。 この場合引数で受け取った"日本語パラメータ"という文字列を プログラム内ではMS932として、文字化けせず"日本語パラメータ"として処理を行いたいのですが どうすればいいでしょうか? まず、batファイルをダンプして"日本語パラメータ"という文字列を見た場合と args[0]をarg[0].getBytes()してダンプ出力した結果が違うのです。 ためしにarg[0].getBytes("EUC-JP")してもこれもまた上とはまた違った結果になります。 もう、引数で渡されてきた時点でデータが壊れているのでしょうか?
>>670 コマンドラインはプラットフォームのデフォルトエンコーディングで扱
われると思う。batファイルとか書いてあるってことはWindowsかね。で
あれば、コマンドラインはms932で書かないと化ける。
ところで「実行ファイルの文字コードがms932」ってどういう意味?
>>670 echo 日本語パラメータ
だけの内容のbatファイルをEUC-JPで作成して試してみ?
たぶん引数の前、コマンドラインシェルが解釈した段階で化けてると思うぞ。
673 :
デフォルトの名無しさん :2008/08/27(水) 11:33:28
一旦バイトコードに変換してから処理したいんですが 文字化けを起こして出来ません。 PrintWriter out = response.getWriter(); //String val = request.getParameter("kanji"); //byte[] byteData = val.getBytes("Shift_JIS"); //val = new String(byteData, "Shift_JIS"); out.print(val); コメントアウトを外すと文字化けを起こします。 表示先は文字コードはShift_JISであっている筈なんですが・・・ 単純に両方Shift_JISをピンポイントで指定してるのに なぜ化けるのでしょうか?バイトコードへ変換して戻す処理の中で何かデータの欠損でも起きているのでしょうか?
SJIS外の文字は入ってないの?
>673 1. response の PrintWriterオブジェクトの文字コードは何なのかしら? 2. request は正しい文字コードで入力を読み取ってるかしら? 3. 674 のように Shift_JIS外の文字は入ってないかしら? 4. response で出力した先の文字コードは 1 と同じかしら?
行き詰まっているので質問させて下さい。 データベースに日付を管理するresettime・・・というテーブルがあります。 そのテーブルにはtimeというdate型のカラムがあり2008-08-27という値が格納されています。 んでソースです。 public void checkDate() { Date now = new Date();//今日の日付 String sqlIndex = "select * from resettime"; try { db.connect();//データベースに接続する ResultSet rs = db.executeQuery(sqlIndex);//Statementのと同じ機能 rs.next(); if(now.after(rs.getDate("time")//今日の日付のはず)) { //※問題の箇所 String[] sql = new String[2]; sql[0] = "delete from popularmovieinfunnymoviechannel"; sql[1] = "update resettimeinfunnymoviechannel set time = '"+now+"'"; db.addBatch(sql); db.executeBatch();//Statementのと同じ機能 } } catch(SQLException e) { } finally { db.disConnect();//データベースを切断する } } 問題の箇所がtrueとなってしまい上手くいきません。バグっぽい箇所が在ればご教授下さい jreは6_7です。
nowは今日の日付に加えて現在の時刻も入ってるはず そのDBのdate型が時刻を格納してないなら00:00:00になるはず 今日の現在時刻と今日の00:00:00を比較したらどうなるかというと・・・
RMiの呼ばれる実装クラスにて、要求先のIPアドレスを取得する方法はあるでしょうか? 引数で情報を渡すはなしでお願いします。
>>673 request.setCharacterEncodingでSHIFT_JISを有効にする。
あと、Tomcat5.0以降のバージョンでGetの処理すると、
デフォルトの動作でsetCharacterEncodingが無効になるから注意。
server.xmlの変更で対処して。そのあたりはググれば出てくる。
>>677 nowをjava.sql.Date()のインスタンスにしてもtrueになるんですけど・・・
jre変えてみまッス。
結局データーベースから取ったDateとDateインスタンスは比較しても無駄って事ですか?
>>682 java より先に小学生レベルの時刻の概念から学んだ方がいい
>683 あいそうします。ありがとうございました。
685 :
デフォルトの名無しさん :2008/08/27(水) 16:55:15
時間・時刻を比較したいのか
afterとbeforeの動作を誤解してるとかじゃないよね? nowが現在の時刻なんだから、それよりもafterな時刻なんて 存在しない……だから、”問題の箇所”は常にtrueになって当たり前。
687 :
686 :2008/08/27(水) 17:13:43
「それよりもafter」って変だったorz 現在の時刻よりも、未来の時刻は存在しないから ”問題の箇所”は常にtrueって言いたかった……
>>686 もしjava.sql.Date型同士のインスタンスを比較するとして両方のインスタンスが
同年同一日ならafterでもfalseが帰る。
689 :
680 :2008/08/27(水) 21:20:11
>681 nowの方の日にちを調整することで解決させました。 このまま行ってたら大きな誤解を持ったまま行くところでした。thx。
Component component = new JScrollPane(new JPanel()); JTabbedPane jtp = new JTabbedPane(); jtp.addTab(component); のように書いた時に、後々componentを取得する方法はあるで しょうか。 ご教授お願いします。
691 :
690 :2008/08/27(水) 21:40:35
すみません。690ですが 取得したいのはcomponentではなくて、 スクロールペインの中のJPanelでした。 宜しくお願いします。
Strtusについて質問です。 public void setGoods(ArrayList<String> goods){ this.goods = goods;} public void setNumber(ArrayList<String> number){ this.number = number;} このようにしてBeanに格納したArrayListを、 <logic:iterate id="name" name="Bean"> <bean:write name="name" property="number" />: <bean:write name="name" property="goods" /><br> </logic:iterate> 上記のJSPで出力しようとしてもエラーが出ます。 <logic:iterate id="name" name="Bean" property="number"> <bean:write name="name" /> </logic:iterate> <logic:iterate id="name" name="Bean" property="goods"> <bean:write name="name" /> </logic:iterate> こういった書式だと値の表示は可能ですが、当然出力位置が変ってしまいます。 number1:goods1 number2:goods2 number3:goods3 最終的にこういう表示をさせるにはどういった書き方をすればいいでしょうか。
>>691 ((JScrollPane)component).getViewport().getView()
>>693 ありがとうございます。
お陰で無事解決しました。
695 :
688 :2008/08/28(木) 09:17:37
ごめ、嘘ブッコイタ。
>>678 java.rmi.server.RemoteServer.getClientHost() でガマンしろ。
まったくの初心者です。よろしくお願いします。 Javaの勉強をしようと思い 「JDK 6 Update 7」をダウンロードしてインストールしてみました。 環境変数を設定した後に、バージョンが正しいか確認してみたのですが、 C:\>java -version 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) と表示さてれました。 ただし、 C:\WINDOWS\system32>java -version java version "1.6.0_07" Java(TM) SE Runtime Environment (build 1.6.0_07-b06) Java HotSpot(TM) Client VM (build 10.0-b23, mixed mode, sharing) だと、きちんと「JDK 6 Update 7」がインストールされているぽいのですが・・・ これってちゃんとインストールされた状態になったのでしょうか?
すでにインストールされてたっぽい JRE 1.4.2_03 は特に使わないなら削除してしまえ あと javac -version も
>>698 レスありがとうございます。
C:\>javac -version
javac version "1.6.0_07"
C:\WINDOWS\system32>javac -version
javac version "1.6.0_07"
でした。
1.4.2_3の削除についてですが、
プログラムの追加と削除に無く、
レジストリ内も検索してみたのですがそれらしいのが無いため
どこから削除すればよいでしょうか?
700 :
692 :2008/08/28(木) 11:54:23
自己解決しました。 ありがとうございました。
>>699 環境変数の PATH を確認する。
恐らく "C:\jdk1.4.2_03\bin" みたいなのが含まれているはず。
702 :
デフォルトの名無しさん :2008/08/28(木) 15:08:43
デザインパターンの本を買った人へ。 貴方のほらふきの癖を治せば、少しは友達が増えると思います。
703 :
デフォルトの名無しさん :2008/08/28(木) 16:32:37
javaでゲームのようなものを作っているのですが、(GUIです)質問させていただきます。 ゲームを起動すると ログイン画面→どのゲームを選ぶかの選択画面→ゲームの画面 と画面を入れ替えていきたいのですが、どうやって処理すればいいでしょうか? やはりカードレイアウトを使うしかないのでしょうか?画面の切り替えには・・・
704 :
デフォルトの名無しさん :2008/08/28(木) 16:50:41
質問させてください。 while文を回して配列に格納した多くのデータを、 終了後にファイルに出力するにはどうするのが一番効率的でしょうか? ファイルの入出力がよくわからなくて…よろしくお願いします。
Ubuntuなら update-alternativeっていうコマンドでやる。 PATHには入ってないんじゃないかな? javaのパスを直接指定する人も珍しいだろうし。 とりあえず気休めだが、 JAVA_HOMEをいじっておけ。
>>704 効率なんか気にせず作ってみる
だいたい気にするほど遅くないことが多い
実際に気になるほど遅かったらそのときに訊くといい
>>703 古いコンポーネントをremoveして新しいコンポーネントをaddすることもできるよ
708 :
704 :2008/08/28(木) 18:50:07
>>706 ありがとうございます。とりあえず作ってみます。
709 :
デフォルトの名無しさん :2008/08/28(木) 19:30:56
>>707 ありがとうございます。removeで取り除くことを忘れてました。。
カードレイアウトとどちらが良いんでしょう・・・
710 :
デフォルトの名無しさん :2008/08/28(木) 19:32:27
>>707 ありがとうございます。removeで取り除くことを忘れてました。。
カードレイアウトとどちらが良いんでしょう・・・カードは重くなりそうな印象で
二重・・・すいませんov2
>>710 印象で選択するのは危険。
実測してみればいい。
713 :
デフォルトの名無しさん :2008/08/28(木) 23:39:43
他のスレで話題に上がってて気になったんで質問。 Javaでチャット機能作る場合は一人に1スレッド設計しか無理なの? サーバからのメッセージも随時受け取らないとダメだし
一人の何に1スレッドを当てるの?
715 :
デフォルトの名無しさん :2008/08/29(金) 00:55:57
スレッドは常にwhileで受信の準備をしてるんじゃない?
非同期
717 :
デフォルトの名無しさん :2008/08/29(金) 01:43:05
genericsについて質問です。 Parentクラスを継承するChildクラスを定義して下記コードを記述しました。 List<? extends Parent> list = new ArrayList<Child>(); list.add(new Parent()); 上記コードでコンパイルエラーが出ます。 型を見るとadd()の引数がnullになってました。 きっとadd()しちゃいけないから引数の型がnullなんでしょうけど、 理由がよくわかりません。教えてくだしあ。
718 :
717 :2008/08/29(金) 01:53:34
すんまそん。コードの2行目は list.add(new Parent()); じゃなくて list.add(new Child()); でした。どっちにしろ結果は同じなんですけどね。
719 :
デフォルトの名無しさん :2008/08/29(金) 02:02:59
>型を見るとadd()の引数がnullになってました。 ?
>717 何度書いたか分からんが、ジェネリクスは静的解決、キャストは動的解決。 List<? extends Parent> という宣言を書いたからオカシイ。 そもそも、宣言部分の代入式のほうで、<Child> としているではないですか。 何故、List<Child> と書かないのですか?
721 :
717 :2008/08/29(金) 03:26:41
>>719 Eclipseでの話となりますが・・・
「list.」までを入力するとメソッド一覧が出てきますよね?
そこでaddの定義を見ると、add(null arg0)となっているんです。
addをCTRL+左クリックで表示されるクラスファイルエディターでも確認できます。
なんでジェネリックス入れてRTTI入れなかったんだっけ? VMの実装が複雑になるから?
それがJavaだから。
>>717 List<? extends Parent>
には、Parent を継承したクラス Child1 や Child2 などを用いた
List<Child1> や List<Child2> などが代入されているかもしれない。
これらが同時に安全に add できるものは、
どんな型にもキャストできる null しかない。
725 :
デフォルトの名無しさん :2008/08/29(金) 09:03:12
デュアルコアのCPUが2スレッドを同時に処理するJavaプログラムを動かすとします。 この場合1コアあたり1スレッドなんていう動作になるんでしょうか? もしそうだとすればnコアでn未満のスレッドを動かしたときどうなるのか非常に気になりますが。
>>725 Sun の Java VM であればネイティブスレッドなので 1 コア 1 スレッドで動くことができる。
というか、1 コアが 1 スレッドしか動かせないと思ってないか?Intel だって Hyper Threading
で 1 コア 2 スレッド動かせるし、Sun の Niagara 3 にいたっては 1 コア 16 スレッド(1 CPU
16 コアなので全体で 256 スレッド)動くぞ?
> もしそうだとすればnコアでn未満のスレッドを動かしたときどうなるのか非常に気になりますが。
別に気にならないだろ。普通に動くだけだが、何か変な妄想してないか?
空いてるコアは別の仕事するだけだ。
従来のシングルコアで10スレッド動かしたら 1コア当たり何スレッドの処理をするんだろうか? Javaプログラムだと5スレッドかもしれないし、100スレッドかもしれない しかし、これだと処理されないスレッドが発生し、さらに 他のスレッドも待ち状態のままになり、見かけ上ではフリーズしたのと同じだ これを回避するためにPentium4のHT技術が開発されたんだな Intelすげえという電波ですねわかりません
コア数よりスレッド数が多い場合は見かけ上ではあるがOSがタイマー割り込みで実現する。 シングルCPU時代のスレッドは基本的に待機スレッド。 ビジースレッドの並列処理で処理効率をあげるような手法はマルチじゃないと意味はないが、 基本的にIOやイベント待ちでスレッドは止まっているものだ。 それからHTは微妙でビジースレッドの並列処理向きじゃないんだよな。
新規質問。 Servlet 作ってて困っているのだけど、 スレッドID ってスレッドが動いてる時に突然変更されることってありえる?
>>729 ない
ってJavadocに書いてあるよ
731 :
デフォルトの名無しさん :2008/08/29(金) 16:00:09
intelがjava bytecodeとclassesを直接読み取っちゃうCPU命令を実装してくれればいい。
>>731 死屍累々ってほどでもないが、すでにそういうチップは作られていて全く普及して無い。picojavaとか。
そもそも Java の byte code 自体がハードで実装するには不向きな内容だし。
昨今は実行時プロファイリングでホットスポットを解消するほうが実行速度が上がるし。
intelのfloatや超越関数とかの機械語は、ibmやsunから見ればハードでの実装は不向きな内容であって、 それこそsin[x]なんかはソフトウェア(ライブラリ)で実装するもんだろうな。 つまり、java bytecodeはハードでは不向きという考えは古い考えじゃないの? 君みたいなゴミにとってはこれぐらいの話しすらついて来れないんだろうけどww
jvmとjavaはもともとは家電(ハード)組み込みの設計だったしなぁ
>
>>732 おまえはどこに行っても相手にされないし無能なやつだな
テキストファイルのエンコーディングが予めわかっていない場合 どうやって適切なエンコーディングで読むのでしょうか? Javaのライブラリを使用すれば、自動的に適切なエンコーディングで読んでくれるものがあるのでしょうか?
教授目指してみようかな。 それは結構面白いかも知れない。 戦国時代に生まれたかった。 そして戦場で野垂れ死にしたかった。
738 :
デフォルトの名無しさん :2008/08/30(土) 00:14:47
先生にも2つのタイプがあってな、1つは研究者で教えるのが仕事じゃなくて技術の追求が仕事で、もう1つは教えるのが仕事の教師でどちらかといえば過去・既存技術に精通していて教えたり話したりするのが好きで上手な人。 聞きかじった最先端の雑記を偉そうに語るのは、先生じゃなくても無能なサルでも出来るけど、お前のタイプはどっちだ?
MITの教授になりたい。
>>736 不可能です。
あきらめてあてずっぽやるか、人間さまに直接おたずねください。
741 :
デフォルトの名無しさん :2008/08/30(土) 00:39:06
少なくとも、最新技術を追いかけるのは最先端のオナニー・ショウを見てるようなものでしかないよ。 それよか、過去の技術や発明・基盤技術をちゃんと知ってるかどうかじゃないの? 大学でやってんならなおさらPCの歴史とかPCがたとどって来た道を知らないとねぇ。 ハードよりなら制御とか組み込みだし、ソフトよりならアルゴ・ライブラリとかコンパイラじゃないの? すくなくとも、intelの機械語sin[x]は実際はハード内部でデコードしてハード・ロジックのライブラリを呼び出してるだけだしw まずは自分用のCコンパイラを作れるかじゃないかな?
>>741 針が太すぎて、ブランコ代わりに腰掛けられるよ・・・
先端オナニーですね、分かります。
じゃう゛ぁとともにあらんことを。
745 :
717 :2008/08/30(土) 00:55:29
>>720 それだけじゃ
>>724 みたいな結論にたどり着けないっすよ先輩。
理解してる人しか理解できないヒントというか何というか。
>何故、List<Child> と書かないのですか?
Genericsの勉強中に、クラス間に継承関係があっても
List<Base> = new ArrayList<Child>();
のような事はできませんが、
<? extends Base>を使えば可能、という記述を見つけたので
試していただけです。で、add()ができないのは何故かと。
>>724 仮に可能であれば、
Child hoge = list.get(0);
とした時にChild1やChild2を返してしまいClassCastExceptionが発生するため危険、
という事でいいですか?
List<? extends Base>#get()の返り値の型をBase型として返せば
いいような気もしますが、それもやはり不都合があるんでしょうか。
746 :
デフォルトの名無しさん :2008/08/30(土) 01:02:26
ジャヴァーは、言語仕様や文法よりも「ライブラリ☆命」なんですが・・・
>>745 List<? extends Parent> list = new ArrayList<Child1>();
list.add(new Child1());
list.add(new Child2()); // ←ココ
>>745 >List<? extends Base>#get()の返り値の型をBase型として返せば
List<? extends Base> list = new ArrayList<Child>();
を例えば
List<Child> childList = new ArrayList<Child>();
List<? extends Base> list = childList;
としてみましょう。
list.add(new Base());
が実行された場合、list.get() は Base インスタンスを返せるでしょうが、
childList.get() は Child のインスタンスを返せる(返すことを保証できる)でしょうか。
>>743 SFCの『ラブクエスト』を思い出した。
「先っちょ、先っちょ、気持ち良い!」
>>733 コプロセッサって知ってるか?
>>735 そうだな。オマエくらいしか相手にしてくれなくて人生寂しいよ。
でもオマエがこうやってレスしてくれて、マジな話ちょっとうれしかった。
無視されるのが一番辛い。煽りでもなんでも、反応してもらえてサンキュ。
ぬるぽ
KeyTypedの中でgetKeyCharを使って入力をコンソールに表示しようとしても0としか表示されません。 getKeyCharなら、アルファベットキーは表示されるのですが、矢印キーの時は何も表示されません。 どうしてでしょうか?
753 :
デフォルトの名無しさん :2008/08/30(土) 15:32:44
JScrollPaneのJTableについて質問です。 例えば、あるボタンを押したらJScrollPaneがJTableの1行分だけ 下または上にスクロールする、というようなことは可能でしょうか。 JTable内で選択されている行を、そのボタンを押せば自動的に ひとつ次or前の行に選択を移動させるようにしようと考えているのですが、 ScrollPaneに表示されている行内の終わりからボタンでさらに選択を奥に移動させると、 選択行は変わりますが、スクロールはしてくれないので、どうしたものかと悩んでいます。
>>752 > KeyTypedの中でgetKeyCharを使って入力をコンソールに表示しようとしても0としか表示されません。
のgetKeyCharはgetKeyCodeの書き間違い?
なら、
> KEY_TYPED イベントの場合、keyCode は VK_UNDEFINED
なのでVK_UNDEFINED(=0)が返る。
矢印キーなどのキーコードが取りたければ、
keyTypedでなくkeyPressedやkeyReleasedでイベントを捕まえる。
755 :
752 :2008/08/30(土) 15:50:11
>>754 その通りCharじゃなくてCodeでした。
String str = "ABCDE"; という文字列があって、この文字列を逆にして表示させたいです。 最終的に、System.out.println(str); で、画面には EDCBA と表示させたいです。 文字列を引数にとって、それを反転して返すメソッドがあるのは 分かったのですが、そういうのを使わないで、配列やforをうまく使って 自力で反転させたいのです。 charAt(int index)やfor辺りで試行錯誤したのですが、どうも辿り着きません。 方法を教えてもらえませんでしょうか?
>>757 無駄なコードを書くことに、うまい方法なんて無いのでは?
759 :
デフォルトの名無しさん :2008/08/30(土) 17:06:24
>>756 どうもありがとうございます。その先に記述されているのをヒントとして、
ほぼ完成というところまでたどり着けました。
ただ、スクロールバーの▼・▲のボタンや、バーで移動させた際に、
その移動をさせたことを検出させて、かつ移動した距離を知りたいのですが、
どうにか知る術はないものでしょうか?たびたびすいません。
>757 Stringオブジェクトは、作成後、状態を変更できません。 ということは、反転した Stringオブジェクトを作成する時点で、 既に反転した状態を持つ「何か」を用意する必要があります。 「何か」は、char配列でも良いですが、単に追加するだけなら java.lang.StringBuilder/Buffer が良いと思います。
763 :
デフォルトの名無しさん :2008/08/30(土) 17:19:30
764 :
デフォルトの名無しさん :2008/08/30(土) 17:57:51
相変わらずひねくれてる奴多いな。
>>757 はそりゃアルゴリズムの問題でjavaとはあまり関係ないない。
str2=new StringBuffer().append(str).reverse().toString();
これがjava流。良くAPIを読むとサロゲートはreverseしないとかがまたいい!
765 :
757 :2008/08/30(土) 18:13:46
>>758 確かにうまくはないですね、言い方が悪くてすいません。
ただ、専用のメソッドを使うより、他のやり方を考えたら
プログラムの理解度も高まるかなーと思いまして。まだ初心者なんです。
>>762 配列を反転する方法がわからなかったので、
結局配列もStringBuilder/Bufferも使わないアナログなやり方で完成しました(´・ω・`)
ありがとうございます。
>>764 ひねくれものですかね?ヽ(´ー`)ノ
>>765 理解したいなら、reverseのソース読むべきじゃね?
ボタンを押すと定められた波形・音程で音が鳴る、という簡単なアプレットをMac OS X上で作りました。 当然Mac上では問題なく動くのですが、Windowsではうまく動きません。 音意外の部分は問題ない挙動なのですが、どうにも音だけが出ません。(サンプルレート8000、ビットレート16、モノラル) Javaのバージョンも最新です。 何か心当たりのある方、教えて頂けると助かります。お願いします。
テーブルで常に一行だけしか選択できないようにする方法ってあります?
>>702 じゃあ、これから正直になりますので、友達になってください。
>>768 APIドキュメント見てもいないのか?
JTable#setSelectionMode 辺りを探れ
>>765 どんな方法にしろ、目的を達成するプログラムが書けたのならOKだ。
後は 766 の言うように他の同じことをするプログラムを見て、違いを観察するんだ。
自分で書き、他人のを読み、違いを吸収して次に生かせばいい。
>>761 AdjustmentListenerは?
scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener(){
int oldValue = 0;
public void adjustmentValueChanged(AdjustmentEvent e){
if(e.getValueIsAdjusting()) return;
System.out.println("Adjusted: " + (oldValue - e.getValue()));
oldValue = e.getValue();
}
});
とかで
773 :
デフォルトの名無しさん :2008/08/30(土) 21:00:41
java初心者です。お聞きしたいことがあります。
javaからPHPにバイナリデータを渡したいのですがデータの中に0x00が
含まれていると2byteの0x5c,0x30に置き換わってしまいます。
どなたかご教授おねがいします。
String postParams = "p1=";
byte[] byteBuf new byte[1024];
OutputStream oStream = null;
:
con = (HttpConnection)Connector.open("
http://localhost/xxx.php ", Connector.READ_WRITE, true);
con.setRequestMethod(HttpConnection.POST);
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
oStream = con.openOutputStream();
oStream.write(postParams.getBytes());
oStream.write(byteBuf); //←ここのDATAに0x00が含まれていると
oStream.close();
con.connect();
:
>>773 >byte[] byteBuf new byte[1024];
コンパイル通ってるコード?
byteBufに実際は何を入れてるのか。
HTTP POST でベタにバイナリなんて送れたっけ?
JTableでアクティブな行は青色になりますよよね? それに加えて行の中でクリックしたセルだけ青い囲みがかかるんですけど このセルの囲いをなくすことってどうやったらできるんでしょうか? 検索してもちょっとわからないので、、、ご教授ください。
777 :
デフォルトの名無しさん :2008/08/30(土) 23:02:31
>>772 おお、ありがとうございますm(_ _)m
無事にできました。
>>776 setCellSelectionEnabled(boolean)とかなかったっけ?
779 :
デフォルトの名無しさん :2008/08/30(土) 23:16:39
>774,775さん 上記例では部分抜き出しで書きましたがコンパイルは通ってます。 データは仮に [0xff,0x10,0x00,0xff]だとしたらPHPで受け取って そのまま送り返して調べた結果では、 [0xff,0x10,0x5c,0x30,0xff]となってます。 画像データなども送りたいと考えているのですが。 宜しくお願いします。
データの持ち方について質問です。 プリミティブ型はスタックにデータを持ってて、ヒープ領域は使わないと認識してますが合ってますでしょうか。 それと、プリミティブ型の配列はヒープ領域を使ってて、要素0のデータへのアドレスをスタックに格納して、ヒープ領域では連続した領域に格納されているという認識で合ってますでしょうか。 あと、オブジェクト型の配列でも同様に、ヒープ領域では連続した領域に保持されているのでしょうか?
>>778 うーむ、それだとセルのみ選択したときに色がつくようになっちゃうんですよね・・・。
逆のことをしたいんですが、何かないでしょうかね。
>>779 >byte[] byteBuf new byte[1024];
なんて、コンパイル通る訳無いだろ。
コンパイルも通らないコードなんか載せられても何も答えられんわ
783 :
デフォルトの名無しさん :2008/08/31(日) 02:01:47
>>780 jvm.dllの実装上の問題です。普通はそのように実装するんですけど、あなたにピッタシのAPIはByteBuffer.allocateDirectですかね。
784 :
デフォルトの名無しさん :2008/08/31(日) 02:42:37
>>782 さん
あああ!、申し訳ないです。'='←書くの抜けてました。
プログラム上ではちゃんと書いてます><
byte[] byteBuf = new byte[1024];
何度もすみません。
>>779 コード 0x00 (NUL) が 0x5C 0x30 (\0) に変換される、と。
773 では、Content-Type に application/x-www-form-urlencoded を指定しています。
この指定自体は、form を送信する際の一般的な設定だと思います。
しかし、この指定によって、クライアントかサーバか、どちらか分かりませんが、
変換が行われてると、私は思います。
つ【パケットキャプチャ】かな?
>>781 TableCellRenderer を見れ。
>>779 >そのまま送り返して調べた結果では、
PHP が受け取ったモノをチェックしろよ。
送り返して調べたって、送り返す時にヘマしてたら分かんなくなるだろ。
x-www-form-urlencodedの意味を考えろってことで。
790 :
デフォルトの名無しさん :2008/08/31(日) 11:34:44
>785,787さん PHP側では <?php $p1 = isset($_REQUEST['p1']) ? $_REQUEST['p1']: ''; $p2 = isset($_REQUEST['p2']) ? $_REQUEST['p2']: ''; if ( $p1 ){ echo ($p1); } ?> としているのですが。 PHP側でも調べてみます。
>>773 お前の書いたsetRequestMethodとsetRequestPropertyを一万回読み返せ
BASE64でエンコード/デコードするか、URLにエンコードするか、
Content-Typeをimage/jpegにするか、バラバラすぎる。
あと受け側がどう処理するかによって異なる。
酷い流れデツネ
793 :
717 :2008/08/31(日) 15:31:20
>>747 >>748 すんません。
実際に返されるインスタンスの型が問題であって
返り値の型をBaseクラスにしても全然解決になってないですね。
質問に答えてくださった先輩方ありがとう。
794 :
デフォルトの名無しさん :2008/08/31(日) 15:39:43
JPanel上でImageIOつかいたい どうしたら良い?
というかHTTPすらろくに理解してないんじゃないのか? x-www-form-urlencodedでバイナリ送るとか吹いたぞw
ホームページのフォームからJava servletでMySQLに複数の名前と番号のセットを 入力したいのですが参考になるホームページが見つかりません。 参考になるサイトやブログを教えていただけないでしょうか。
797 :
デフォルトの名無しさん :2008/08/31(日) 16:38:00
795のように書けばあたかも知ってるように見えるが大概は知らない場合が多い
コンソールで入力した文字列から、特定の文字が何文字含まれているか 表示するプログラムを作りたいのですが(例えば「javaprogram」と入力したら 「aは3個含まれています」と表示されるような感じです。 どうすればできるでしょうか?相当考えたのですが… 何の構文やメソッドを使うのか…どうかヒントをば…
String#indexOf
>>794 BufferedImage と ImageIcon の合わせ技。
802 :
デフォルトの名無しさん :2008/08/31(日) 17:44:52
BufferedImage bi = jPanel1.getComponent(0).getGraphicsConfiguration() .createCompatibleImage(10,10); これでいいのかな
>>796 1個のデータは登録できるのか?
できてないなら、無理すんな。
まずは単一で考えなよ
>>798 ・char[] にしてまわす
・StrigBufferにしてまわす
どちらでも好きな方を
805 :
デフォルトの名無しさん :2008/08/31(日) 18:54:53
または、特定の文字をすべて削除した文字列を作って長さを比べる 自分も質問なんだけど、テキストエリアの後ろに画像を入れるにはどうしたら良いのかな。
806 :
デフォルトの名無しさん :2008/08/31(日) 18:59:19
正確にはJScrollPaneだった・・
HTMLDocument使うとか、画像に対応したDocumentとViewを作ればいいんでない?
ん?やりたいことがいまいち分からない・・ 背景に画像? JScrollPaneのViewportに画像描画してJTextAreaを透明にってこと?
>>786 すんません、調べてみたんですがどうしてもわからない・・・
CellRendererの中にクリックでアクティブになったセルに関する設定項目が見つからないっす。
説明が下手なんですが、わかりやすく言うと、クリックされたセルのある行は薄青になりますよね?
それとは別に、その薄青の行の中でクリックしたセルだけボーダーラインが太くなりますよね。
あの太いボーダラインをなくしたいんです。
setRowSelectionIntervalを利用すると行が薄青になるだけなので、テーブルのMouseListenerに
1 int rowIndex = jTable.getSelectedRow();
2 jTable.removeRowSelectionInterval(rowIndex, rowIndex);
3 jTable.setRowSelectionInterval(rowIndex, rowIndex);
とやってみたのですが、これだと2の部分では薄青だけ消えて、太いボーダーラインが残ってしまいます。
どうすりゃ消えるんでしょうか、、、
810 :
デフォルトの名無しさん :2008/08/31(日) 19:48:48
>> vewportでやってみたのですが、イメージがやけに暗く表示されてしまいました。 バッファしてる間に暗くなるとかあるのかな・・・
ないない。 もうちょっと詳細を教えてくれないと何とも言えないよ
すいません。 出かけ先にいるので帰って見直してみます。 ありがとうございました。
813 :
796 :2008/08/31(日) 20:12:47
>>813 最大10件とかならば、name-1, value-1 のように固定でHTMLに埋めてしまえ
完全可変にするならば、動的にJavaScriptでinputを作っていけばいい
>>805 Swingの話かHTMLの話か解らない
SwingだったらTextAreaとLabelを配置したパネルを作って、それを配置する方が楽だし、再利用しやすい形になると思う
816 :
796 :2008/08/31(日) 20:52:25
>>814 すみません説明不足がありました。
仰るとおりHTMLのフォームはname[1],name[2]...のようにフォームに番号を付けています。
servletの方ではこれをループでMySQLに入力するようにしています。
また、名前(漢字)と数字なので先にループで配列に入力するといった方法も出来ませんでした。
JavaScriptによる入力ですが技術的に難しいです。
817 :
796 :2008/08/31(日) 21:02:33
肝心なことを忘れてました。 もし、フォームに名前はあっても番号はない場合は登録せず 次のフォームを読み取らせ、ループは名前が無くなったら出るというシステムです。 長々となってしまいまして申し訳ありません。
818 :
デフォルトの名無しさん :2008/08/31(日) 21:05:26
ネイティブ言語や .NET 言語で実現できることは、Java でも実現できますか?
無理。
こんな感じでできるだろ for(int i = 1; i < n; i++) { getParameter("name[" + i + "]"); getParameter("value[" + i + "]"); }
821 :
796 :2008/08/31(日) 21:13:43
>>820 データは取得できるとは思うのですが、
データを保存またはMySQLに連続して登録するときはどのようにすればよろしいでしょうか。
822 :
デフォルトの名無しさん :2008/08/31(日) 21:24:00
>>821 Valuesをつなげるか、何回もUpdateとかInsertする
beginTransaction(); for(int i = 1; i < n; i++) { getParameter("name[" + i + "]"); getParameter("value[" + i + "]"); insertOrUpdate(data); } commit();
テーブルでソートを行うために setAutoCreateRowSorter(true)を使っているのですが、 ソートを一時的に無効にしたい場合が生じました。 setAutoCreateRowSorter(false)ではだめなようなので、 setRowSorter(null)を使っているのですが、 このような方法でよいものでしょうか。
>824 APIドキュメントは読みましたか? そこに書いてありませんか?
826 :
798 :2008/08/31(日) 23:05:53
827 :
デフォルトの名無しさん :2008/08/31(日) 23:06:51
>>819 実現な無理なことって何?
※中間言語を介しているのでネイティブより遅いってのはナシ
828 :
デフォルトの名無しさん :2008/08/31(日) 23:08:16
× 実現な無理 ○ 実現が無理
while(!(s = br.readLine()).equals("end")){ ..... } こうして、読み込みと同時にループ判定ってのをJavaではよく使うよ。
てかループの最後でreadLineしなきゃダメだろ、冷静に考えろ
831 :
798 :2008/08/31(日) 23:22:32
>>829 >>830 もうほんとありがとうございます。どっちのパターンでもできました。
未熟ですいません。途中泣きそうになってました。
教えていただいた知識はありがたく吸収させて頂いて、
完全体への糧とさせて頂きます。
アグモン進化〜〜〜!
833 :
デフォルトの名無しさん :2008/08/31(日) 23:24:47
javaの文字処理は、 while (r.ready()) {} がセオリーなんだけど・・・ アホな奴が書いた説明を読んだんじゃないの?
セオリー(笑)と言い切る根拠示したら?
835 :
798 :2008/08/31(日) 23:34:28
>>832 ちょww
>>833 独学でやってるんですが、教科書にはその書き方はのってなかったですね。
でもちょっとした応用ですよね。気付かない自分の無力としておきます。
ありがとうございます。
VB上がりの人は、rubyかperlの方からやっるといいよ。
>833 言いたいことは解るが、その場合は while(r.ready()) { System.out.println("文字列を入力して下さい"); String s = r.readLine(); if(s.equals("end")) break; // 以下同様 } と書かなくてはならないだろ。 そこまでちゃんと説明しないのはあまりにも無責任。 ついでにいえば、r.ready()がfalseになることは基本的にないからな、標準入力からとっているわけだし。
838 :
デフォルトの名無しさん :2008/08/31(日) 23:40:12
>>795 こいつには「友達はいないだろうな」と感じるのは、俺だけなのかな・・・
たぶんMSDNのVBの記事ののりで、いつまでもお子ちゃまのままなのか、もともと糞まみれのまま生活してるとかじゃないか?
だなw
ぬるぽ
842 :
デフォルトの名無しさん :2008/08/31(日) 23:52:42
>>805 です。帰ってきました。
具体的には
JPanel panel = new GraphicPanel("image.jpg");
JTextArea area1 = new JTextArea();
JTextArea area2 = new JTextArea();
area1.setOpaque(false);
area2.setOpaque(false);
JScrollPane scrollA = new JScrollPane(area1);
JScrollPane scrollB = new JScrollPane(area2);
scrollA.getViewport().setOpaque(false);
scrollB.getViewport().setOpaque(false);
panel.setLayout(new GridLayout(2,1));
panel.add(scrollA);
panel.add(scrollB);
という形でやっているのですが・・
GraphicPanel()は、別クラスでイメージ名を渡すとそれがパネルの背景になります。
843 :
デフォルトの名無しさん :2008/08/31(日) 23:56:03
844 :
デフォルトの名無しさん :2008/08/31(日) 23:59:56
>>837 はかなり問題発言だと思うけど、このスレ的には放置でいいの?
ITドカタ出身のカスみたいだし、ほっとけばいいんじゃない?
847 :
805 :2008/09/01(月) 00:06:48
どうやらJScrollPanelの透明化が出来てないようです。。
848 :
805 :2008/09/01(月) 00:13:08
setOpaque getViewport().setOpaque どちらもやると透明になりました!!すれ汚しすいませんでした。
849 :
デフォルトの名無しさん :2008/09/01(月) 00:15:32
そうだ!大学や専門学校でVBとかC#を教えればいいんじゃんか! VBの方が使ってる人多いし、VBアプリもいっぱいあるじゃん。 高校ではBASIC教えてんだから、何で大学とかでVBを教えないんだよ。オレ頭いい〜
851 :
デフォルトの名無しさん :2008/09/01(月) 00:37:46
ジャヴァ最高! サン最高! アムロ最高!
以下でchannelを閉じるときにFileOutputStreamって自動的に閉じますよね? FindBugsさんに怒られて不安になってしまいますた。 FileNotFoudExceptionとIOExceptionはメソッド単位で投げてます。 clearしているstreamは引数で与えているByteBufferです。 File file = new File(fileName); FileChannel channel = null; try { channel = new FileOutputStream(file).getChannel(); channel.write(stream); } finally { // 事後処理 stream.clear(); if (null != channel) { channel.close(); } }
853 :
デフォルトの名無しさん :2008/09/01(月) 00:52:09
javaで開発してる人の半分以上はwindowsであるという事実がある。 しかしjvm runtimeも.net runtimeもほぼ同じことが出来るのに、なぜこれほどまでにMSは嫌われるのかが謎だな。 さらにwindowsのvb, c#で簡単なこと(例えばメディア・プレーヤ系とか)をわざわざjavaでやるのもまたなんとも香ばしい。 今の時代の主流OO言語風に言えば、.netで作ったライブラリをjvmから呼び出せば済むことなんじゃないの?
dot net と jvm bytecode が相互にアクセスして相互に運用が出来るライブラリとかはもう誰かが作ってるよ。 どっかにあったような…海外だったかな?
>>853 効率だけで物事を選ぶわけじゃないからだろ。
857 :
デフォルトの名無しさん :2008/09/01(月) 01:45:30
俺のサーバPC(インテルCPUじゃないの)でiphone使えたりmp4再生できても意味ないからな・・・ それよりも、それらコーディックの類は特許の塊でもあるから、jvmで実装するよりもそういうのは特許に関心があるMSに任せといて、 それらメディア系のファイル使うときは、dotnetやjavaのライブラリAPIでアクセスできれば十分じゃないの? h.264みたいな最先端の技術はさすがに専用のデコーダ兼表示端末(インテルPCとかかな)ないと実用じゃないだろうけど、 そうじゃなければ、昔からあるシェルのパイプ機能に毛が生えたのでいいよ。 特許がどうとか言うと、ライセンスとか裁判とかジャスラックとかウザイだろw どうせおまえなんか法学部出身なわけでもなければ民事裁判やったことないんだろうしww
858 :
デフォルトの名無しさん :2008/09/01(月) 01:53:59
iniファイルでプロパティ設定するのは骨が折れるから、プロパティ設定辺りはいまどきはGUIでサクッとやりたいなと思うけど。 Javaがデスクトップとかメディアに進出もいいけど、どうせ特許の壁にぶつかるし、出来ても所詮はネイティブであって、携帯電話でそのデコーダ(コーディック)が動くわけでもないし、 今必要なのは、swingみたいにコンポーネントやbeansを作ってくれればいいでない? java/jvmの管理とかマネジメント充実も一通り終わったから、そろそろデスクトップのUIとかの方かなと思う。
夏休みは終わったらしいぞ
すれ違い
どなたか >833 の解説をお願いします。 reader.ready() は「次の読み込みがブロックされるかどうか」だけとの事ですので、例えば以下の場合には正常に動作しない場合もあるかと思います。(※クライアントからデータが未送信の場合) Socket s = serverSocket.accept(); BufferedReader reader = new BufferedReader(new InputStreamReader(s.getInputStream())); while(reader.ready()) {/* 処理 */} また、StringReader#ready() は常に true を返したりもします。 このような危険性がありながらなお ready() がセオリーとされる理由を御教示頂けないでしょうか
それよか、.NetとJVMを結びつけるライブラリとかほんとにあんの?
863 :
デフォルトの名無しさん :2008/09/01(月) 10:44:40
>>861 たぶん君は、ストリームのことを大学で教えてもらえなかった哀れな人なんだろう。
まずstdinを(line!=null) ?とかでナル・チェックするのはマズイことを知れ。
>863 お返事ありがとうございます。 独学なので更に哀れな知識量しかなく、色々間違っているかと思います。 もう少々お付き合い下さい。すみません。 > stdinを(line!=null) ?とかでナル・チェックするのはマズイことを知れ。 との事ですが、その前に疑問を整理させて下さい。 元々の疑問は、「文字処理は ready()がセオリー」との発言でした。これは標準入力に限らず、Reader 系全般に当てはまるかと思います。 ここで、敢えて ready() をセオリーと言っていた事がよく分かりませんでした。 Reader#ready() は、「次の読み込みがブロックされるかどうか」を返す訳ですから、入力が無い == ブロックされる == false となり、例えば標準入力であれば、起動直後の入力が無い場合には BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); while (r.ready()) {/* 処理 */} としてもループ内に入ることなく抜けてしまい、期待した動作はしないかと思います。 同様に、Socket から文字列を読み込む場合でも、通信状態に応じて、データパケットが届く前に ready() が実行される事もあるかと思います。 であるのに、ready() をセオリーとする理由がよく分からず、質問した次第です。 (ファイルからの入力に限定するのであれば、ready() がセオリーでも理解はできるのですが) 頭の悪い質問で申し訳ありませんが、回答をよろしくお願いします。 あと、stdin を null チェックするのはまずい、という理由もよく分かりませんでした。 System.in は null を返さない、とかそういう単純な理由ではありませんよね? 宜しければ一緒に教えて頂けないでしょうか
俺は Reader#ready() 使ったことないのでセオリーとは思ってない。
stdin だろがなんだろが BufferedReader#readLine() だったら EOF->null だから当然チェックする。
>>833 >>863 の説明に期待するかw
で、Reader#ready() は「ブロックされるかどうか」じゃなく「ブロックされないかどうか」だ。
false だからといってブロックするとは限らないし、入力が無いとも言えない。
JTableからJScrollPaneって取得できますか。 JTableのsetVisibleだとテーブルを非表示にできないようなので、 JScrollPaneのsetVisibleを呼びたいのですが。
getParentで取得してチェック
インタフェースにあるクラス(インタフェースじゃない)を継承させることってできますか?
むり
基本データ型のうちなぜString型だけ先頭が大文字なのでしょうか? これだとラップクラスと同じになりますよね。
Stringは基本データ型ではありません java.langパッケージに属するクラスです
>>871 Stringは基本データ型じゃないだろ。
これだからCをやってないやつはだめなんだよな
ではchar型も基本データ型ではありませんね
どうしてそう思いますか?
877 :
871 :2008/09/01(月) 17:23:02
すみません何か大きな勘違いをしてました Stringはどう見ても基本データ型じゃないです
byteからintに符号なしでキャストしたいときはどうするんですか?
(int)Math.abs()
>>879 言い方が悪かったです
(byte)0xff が-1でなく255になるようにしたいです
byte b;があったとして b&0xFF ってすりゃいいよ。
(int) ((byte) 0x80) // 0xffffff80 = -128 ((int) ((byte) 0x80)) & 0xff // 0x80 = 128
解決しました。ありがとうございます
> 865 返答ありがとうございました。 ひとまず、ready() の件はセオリーとは言えない、と認識して納得しました。 > で、Reader#ready() は「ブロックされるかどうか」じゃなく「ブロックされないかどうか」だ。 確かにその通りでした。大ボケこいてました。ご指摘ありがとうございます。 お騒がせしました。
885 :
デフォルトの名無しさん :2008/09/01(月) 20:17:22
APIもちゃんと読んでもいなければ、ソースも読んでないんだろうな。 たとえば、java.io.Ready.read():Iのソース見たことないだろw お前のようにいつまでも妄想してようじゃ上達しないんじゃない。 それなら、いつready()を使うんだろう?
>>884 ready()とストリームついて知りたかったら、難しい解説本読むか、ちゃんと学校いけよw
2chでお手軽に聞くようなお手軽独学厨房にはもったいなくて教えてやんないww
>>885 java.io.Ready.read・・・
すみません 知識が浅いもので不快にさせてしまいましたら申し訳ありません 一応、判らないなりに、SunのJAVA5実装はReaderからStreamDecoder経由してio_util_md.c までは辿っています。 これ以上どこを見るといいのか教えて頂けますか よろしくお願いします
889 :
デフォルトの名無しさん :2008/09/01(月) 20:33:29
ストリームも知らないなら別にナムル・チェックいいでない? どうせargs[k]とかやってる程度の人だろうしww
891 :
デフォルトの名無しさん :2008/09/01(月) 20:41:23
あじゃぱー
893 :
デフォルトの名無しさん :2008/09/01(月) 20:46:29
>>888 そこまでソース追いかけても分からないならタコでしょw
Reader.read():Iが何でnativeでなくてnew char[1]なのかで十分分かると思うけど・・・
もしセンスがあればだけど、多分君はお勉強はできるけど・・・あんまし・・・ってタイプでしょうか?
というよりも、それならいつready()を使うわけ?
894 :
デフォルトの名無しさん :2008/09/01(月) 20:49:54
東大の教授になりたかった・・・
897 :
デフォルトの名無しさん :2008/09/01(月) 20:57:20
>>895 なんみょう〜
なんみょう〜
なんみょう〜
まずJavaの本読むより、「バカの壁」を読んでからじゃね?
ListってCでいうとこのstructみたいなもんすか?
901 :
デフォルトの名無しさん :2008/09/01(月) 21:38:21
ready()なんか使う奴こそ糞だな! 一生ナンミョウ〜やってろよww
ready?
904 :
デフォルトの名無しさん :2008/09/01(月) 21:54:11
ストリームわかんねーの奴は「Cが難しすぎてJAVAに逃げてきました」って程度だろ。そういう奴はJAVAも無理無理。VBAかVBぐらい丁度いいよw
905 :
デフォルトの名無しさん :2008/09/01(月) 21:56:58
ストリームもそうだけど、スレッドも分からない奴がいたよな。 スレッド・セーフがどうとかこうとか適当な妄想を言ってたけど、アレはC#のスレだったか?
StringBufferクラスの必要性をご教授ください。 Stringだけで十分だと思うのですが・・・
それなら、char[]で間に合うから、Stringも必要ないね
StringBuilderで間に合うから、StringBufferは要らないね。
ここは一応 初心者歓迎 となってるのを忘れてないか?
うん歓迎してるぜ。
充分にヒントになっているかと思うが?
913 :
デフォルトの名無しさん :2008/09/01(月) 22:34:35
>>908 悪いがそれは違うな。もう一度JAVAのオブジェクト指向プログラミングの技法とやらから初めて、一からやり直したらどうだろか?
914 :
デフォルトの名無しさん :2008/09/01(月) 22:38:00
>>907 StringBufferはreverse()するとき良く使いますw
Stringクラスは代入するたびに新しいStringオブジェクトを作るので、 メモリ的にも処理速度的もコストが高いんよ。 例えば、aとbとcの文字列を連結する場合に以下のような処理があったとすると -------------------- String buffer = a; buffer += b; buffer +=c; -------------------- StringBuffer buffer = new StringBuffer(a); buffer.append(b); buffer.append(c); -------------------- Stringでは、 += bをしている処理は a に b の文字列を連結してる のではなく、 aとbを連結したStringオブジェクトを新しく作ってる。 同様に +=c の処理でも 新しいStringオブジェクトを作ってる。 一方StringBufferでは、 .append(b) では 文字列を連結しているので 新しいStringBufferオブジェクトは作っていない。 つまり、新しいオブジェクトを作っていない(newしていない)分 メモリも速度も節約できるということ。
>>906 答えられもしないくせに適当なこと言うな
>>915 文字列の操作を行う場合は、って前提が抜けてなければ完璧な回答だったのにな
まぁ今はコンパイルする時点で文字列の結合はStringBuffer#append()に置き換えてくれるから単純な結合は無視しちゃっていいけどね
919 :
デフォルトの名無しさん :2008/09/01(月) 22:56:28
0と1を反転させる方法を教えてください。 かっこいい方法は無いですか?
文字列の0と1なのか別のモノの0と1なのかくらい示せ
かっこいい方法…俺には無理だ
アセンブラの頃は良く XOR したな…
923 :
デフォルトの名無しさん :2008/09/01(月) 23:03:47
int型でお願いします。
924 :
デフォルトの名無しさん :2008/09/01(月) 23:09:04
>>915 そんな数十行にもわたって書くことじゃないと思うけど、お前が噂のニートだろ?それに友達も一人もいない自宅警備員で、実際は、プログラムも作ったことない無能だろww
おー、こわい、こわいw
> 893 ひとまず、標準入力の件に関しては java ReaderClass < data.txt といったデータの与え方をした場合の事なのではないかと理解しました。 確かに、この場合には間違いなく ready() の使い所と思います。 この理解は間違っているでしょうか?
927 :
デフォルトの名無しさん :2008/09/01(月) 23:18:52
>>915 の性格はキモイ説明サイトと同類だな。
もう、そういうサイトはいっぱいあるし、一見丁寧に説明しているようでどうでもいいところが長いだけだし、その程度の説明じゃ人は来ないだろうけどww
たとえば、x=1; new StringBuffer(x)とかだと、その説明の効率的の指摘からすれば、逆に非効率になるんじゃないの?
知ったかぶっりの雑学知識を披露したのは、わからないでもないんだけどねぇ・・・それじゃ文系のITジャーナリストと同じムジナだな・・・
928 :
デフォルトの名無しさん :2008/09/01(月) 23:23:01
文系といえば、確かにALL ABOUTの記事かいてるのはキモイ奴の多いよな。
「どこにも就職できなかったけど、All Aboutで拾ってもらいました!!」て感じのオーラが強いって言うか…
早稲田みたいなところの心理学科卒業で、All Aboutで「アロマがどうとかは心理的に〜」とか専門術語を使って妄想記事かいてるのは吹いたww
>>915 は結局それと同じムジナ。もう無理しないで死んでいいよ。
930 :
デフォルトの名無しさん :2008/09/01(月) 23:25:14
931 :
デフォルトの名無しさん :2008/09/01(月) 23:29:51
妄想ならせめて旧帝大レベルじゃないとだめだろ。といっても、この前の東工大の学生は、左手腕に刺青みたいな模様をさらけ出してて、危ないやっちゃなと思ったけど、東工大は旧帝レベルだから少しは聞いてやったw その話の真意よりも、たぶん自宅警備員候補だろうし、人生苦労する奴なんだろうなと思った。
>>926 そんな場合だからといってready()を使う必要なんてないよ。
10年ぐらいJava触ってて一度もready()を使ったことないけど、「入力が
なければ他の処理をする」という感じの疑似マルチスレッドぐらいしか
用途が思い付かない。で、そういうときは素直にマルチスレッドにする。
雑談したいなら他行け。
>>926 そうか?
標準入力を使うのは、その元が手入力だろうがファイルだろうがttyだろうがとにかく
何かが送られてくるのを受けたいだけだからだろう。
ファイルからだから ready を使うとか考えるのは違うんじゃないか。
934 :
デフォルトの名無しさん :2008/09/01(月) 23:35:41
つまり、
>>915 の説明はString/StringBufferの違いを本質的に指摘してないってことですね。実はそんな風に思ってましたがスッキリしました!
935 :
デフォルトの名無しさん :2008/09/01(月) 23:39:39
文系のITジャーナリストってのは、堀江豚と友達だったメガネで蝶ネクタイの30代ぐらいでキモイ奴か? あいつは正に素早く死んで欲しい。いつもおれは、寝る前には必ず神棚で手を合わせて「早く死んでくれって」祈ってるぐらいだし。
それそろすれ違い
>932, 933 リダイレクトで渡せば EOF が取れないだろうから ready() の出番・・・と思ったのですが、書き込んでから試したらきちんと EOF になりました(阿呆です) 何か根本的に道を間違えているようです。 標準入力 + ready() というキーワードにこだわり過ぎているのでしょうか。 (その辺りを離れて単純に ready() の使い道を考えるのであれば、932 さんの仰るような nio っぽい使い方が一番の使い所であるような気がします。)
Stringをだな。阿呆みたいに+=で連結しまくってるコードがあったんだ。 あんまりにもあんまりだと思って、StringBufferで書き換えてみたんだ。 でもベンチマークを取ってみると、1msも変わらなくてだな。 そのメソッドのほんの数行、DBをアクセスしてる部分が、処理時間の99% 以上を持っていってたんだ……。
つまりStringBufferの利用価値は自己満足が大半ってことですね?
それで結局StringとStringBufferの違いは何?
941 :
デフォルトの名無しさん :2008/09/02(火) 00:19:36
Bufferって付いてるか付いてないか
確かによほど下手なことせん限り大差ないよな。でも演算途中でnew,new,new....ってのは気持ち悪い・・・
もう夏は終わったんだぜ?
でたでたでた。
ちなみにStringBufferとStringBuilderとかHashTableとHashMapとかだと 実際の所どの程度速度に影響するもの?
>>916 夏の終わりの駆け込みかと思ってたけど、オマエ、本気なんじゃないのか?
>>945 そいつらへのアクセスが処理の多くを占めてたら、それなりに効いてくるんじゃないか?
特にマルチコア/マルチCPUだと、synchronizedの部分でメモリの同期化が行われるから、それなりに馬鹿にならないコストがかかるような気がする。
とは言え、Java7あたりだと、JITコンパイラが不要なロックを省略するような最適化をぶちかましてくれるらしいからな……。
>>945 それは自分でやってみれば分かる事じゃん・・・
String:不変オブジェクト StringBuffer:可変オブジェクト っていう教科書にありそうなのではどうだw
>>945 今となっては多分そんなには変わらない。
まだやってんのか。違いは、効率じゃないんだよね。
953 :
デフォルトの名無しさん :2008/09/02(火) 03:27:17
ぼくらはreadyなんかなくても幸せ!
RandomAccessFileは、ソースを見てもnativeばかりですが、 実際(実装上)のところ多少はバッファがきいているから、BufferedInputStreamと同じように考えてよいのでしょうか。 他に気になるところはありますか?
EclipseってJavaでできてるみたいですが Eclipseはexeにするのに何使ってるんですかね?
>>954 どうしてバッファされていると期待できるのかが理解できない。
ソースは見てないけど、バッファされないと思うぞ。バッファリングと
ランダムアクセスは相性悪いから。
いや、逆にバッファされていないと考える方がおかしいんだけど… 問題はバッファされているか・いないかじゃなくて、実用上問題ないかどうかだと思うが? それと、ランダムアクセスとバッファが相性悪いのはどの辺りに根拠があるの?
相性とかそういうレベルの話でVMが作られてたら笑えるw
960 :
デフォルトの名無しさん :2008/09/02(火) 11:17:54
>>958 そろそろ死んだ方がいいんじゃないか?人生疲れただろ。
961 :
デフォルトの名無しさん :2008/09/02(火) 11:21:53
そうだよな…なんで俺は生きてるんだろう…
962 :
デフォルトの名無しさん :2008/09/02(火) 13:09:56
ぼくらはEclipseなんかなくても幸せ!
ローカルでグラフィック描画する時は Graphics gr = img.getGraphics(); gr.drawLine(x1,y1,x2,y2); gr.dispose(); と毎回設定して廃棄しますが グローバルで Graphics gr = img.getGraphics(); としておいて、ローカルで gr.drawLine(x1,y1,x2,y2); だけで、ずっとgrを使いまわしてはだめですか?
いいよ ずっと同じimgに描画するのなら
そうですか
ぼくはJCPADだよ! みんな何使ってるの?
eclipse
今JCPADからEclipseに変えたとこ 閉じるのがいいね
30過ぎてJava覚えてJavaの資格とったらプログラマーの就職先見つかりまつか?
ちょっとの学歴あれば30ならまだ余裕で就けるよ
>>969 おでも三十で就職目指してます。
お互い頑張りましょう。
2つの別のクラスで同じ値を共有したいと思っています ClassA、ClassBはループさせていて常に結果を出力しています。 ClassA{ if(hoge>0) ClassF.setX(true); else ClassF.setX(false); } ClassB{ test.setEnable(ClassF.getX()); } ClassF{ static boolean f; static void setX(boolean bl){ f = bl; } static boolean getX(){ return f; } } こんな感じのプログラムを書いたんですが、ClassBに反映されません どこが間違っているんでしょうか? それとも、別のクラスで同じ値を共有するのは無理なのでしょうか?
もうちょっと意図が分かるように書けよ。 ClassBに反映されないってどういう意味だ? test.SetEnabledで思った値が取れてないってことか? こんな擬似コードじゃ分からんけど、 もしループとやらが複数スレッドで同時に回し続けてるって意味なら、 ClassF.fへのアクセスを同期化する必要がある。 volatileにするかメソッドにsynchronizedつける。
>>972 別スレッドならsynchronizedかvolatile必須だぞ。
要素が1個かつJava5.0以上なら、AtomicBoolean等でもいい。
大量のUDPパケットを受信して、処理したいんですが、 どうしても、幾つかのパケットを取りこぼします。 何か、効率良く処理できる方法はありませんか?
>>973-974 ありがとうございます。
volatile static boolean f;
で望み度通りの結果を出すことができました。
>>976 変数が1個ならそれでいいけど、複数個ある場合はちゃんと同期取らないと変更途中のデータが読み出される可能性があるぞ。
詳しくは、マルチスレッドプログラミングに関する本を読んどけ。
>>975 UDPならパケットが取れないことがあるのは前提じゃないのか
980 :
975 :2008/09/03(水) 00:46:50
DatagramSocketを使って、普通にポートを開いて受信しています。
>>979 答えは、UDPを使わないってことだな・・・
>>980 効率良くポートを開いて効率良く受信しろ
動的なキャストはどうやるんでしょうか? windows95/98のプラットフォーム向けのアプリなんでjdk1.2相当なんですが。 よろしくお願いします。
動的キャストは、 Object obj; ... val=(???)obj ですが、???がコンパイル時未定の時のキャストです。
で、それに何の意味があるの? ???が未定なのにキャストした後でどうやって使うわけ?
987 :
デフォルトの名無しさん :2008/09/03(水) 03:34:55
jdk1.5にある、val.getClass().cast(obj) といった方が早いですね。これを1.2でやるにはどういうコードになるんでしょうか。
988 :
デフォルトの名無しさん :2008/09/03(水) 03:46:03
最近プログラムを勉強しはじめてわからないことだらけなのですが キャストとパースの違いがよくわかりません どなたか教えてください
>>987 >>985 >>986 は無視かい・・・
Class#cast() は
>public T cast(Object obj) {
>if (obj != null && !isInstance(obj))
>throw new ClassCastException();
>return (T) obj;
>}
となってるから generic が無いと無理なんだと思っとけ。
それよりもこれを使うようなのは相当面相なプログラムだと思うが、
これを使わないですむようにするほうが後々の為になると思うぞ。
無視というより、val=val.getClass().cast(obj) 程度で分かりませんでしたか。 使わないで済むように方法を探したんですけど、後々のためというより、ももともとターゲットが古くてこれしかないので聞いてるんですが? 知らないなら無理に御答えにならなくて結構ですけど、あなたはだいぶ妄想好きなんですねw 他に良い施策はありませんか?
>>984 val=(???)objのあと、valをどう使うつもりなの?
型が決まっていなければvalのメソッドとかを呼び出すコードもvalを他のクラスに渡すコードも書けないんじゃない?
というかval自体の型はval=(???)objの前でどう宣言しているの?
objになりうるクラス共通にインタフェースを実装させて、そのインタフェースにキャストするとか、
全体のクラス設計を見直した方がいいと思う。
単なるキチガイだったのか……
>>990 お前の問題だから自分で捜せ
そんな態度じゃまともな人のレスも付かないよ
そう思うんだけど、このスレの態度の方が酷くない。正しく真正糞スレだと思うが?
995 :
デフォルトの名無しさん :2008/09/03(水) 05:09:42
次スレ?
>>991 あなたは、答えらず、それにたいした能力もないのに、そんなに人の庭が好きなんですか?
その設計とやらを知って、あなたは手伝ってくれるんですかねw
一つ忠告しておけば、首突っ込むのは程ほどにした方がいいですよ。
999
1000get!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。