★★Java質問・相談スレッド133★★at TECH
★★Java質問・相談スレッド133★★ - 暇つぶし2ch855:デフォルトの名無しさん
09/11/18 00:17:34
>>846
自分も初心者なんですが、
static int[] mkArr(int itemNum){
int[] arr = new int[itemNum];
//入力
return arr;
}
メソッドをこんな感じにして

int[] arrName = mkArr(itemNum);
呼び出し側で、受け取ればいいのでは?
arrNameは受け取りたい配列名で。

たとえば、
String str = "arr";
int[] str = new int[5];
とやっても、arrという名前のint型の配列は
出来ないかとw

856:デフォルトの名無しさん
09/11/18 00:19:25
ああ、呼び出し方がおかしいですね。
すいません。

857:デフォルトの名無しさん
09/11/18 00:35:34
>>846
なかなか独創的なコードだけど、以前はどの言語をやってたの?

858:デフォルトの名無しさん
09/11/18 01:27:56
識別子に表情以上の物を求めるのが素人
識別子に_だけでプログラムするのが変態
識別子にg,o,t,oしか使わないでコーディングするのも変態

859:デフォルトの名無しさん
09/11/18 01:58:04
識別子に$とか付けるのは宗教

860:デフォルトの名無しさん
09/11/18 02:35:54
>>845が「新規でHibernateはありえない」って言ってるけど、なんで?
JPAやiBatisと比べてどの辺がありえないの?

861:デフォルトの名無しさん
09/11/18 03:47:43
標準技術じゃないわりに複雑だからだろ。
JPAとの対比で語ってるからNativeAPIやらHQLでの話なんだろうけど。

862:デフォルトの名無しさん
09/11/18 11:50:27
>>848
Javaとか初心者とか言って質問する前に、変数と関数というプログラムの基礎概念を勉強してこい

863:デフォルトの名無しさん
09/11/18 22:25:58
JWebPaneっていつから使えるようになるんだろう

864:デフォルトの名無しさん
09/11/18 22:50:16
JPAは当然ながらORM標準であることが利点。
ORMの業務適用要件は2.0の悲観的ロックサポートで満たしたと言ってよい。

iBatisはSQLをガリガリかけて、かつマッピングも楽ちんだから、
Java屋ではない外様がORMのメリットをすぐに享受できるところが良い。

本格的なORMは真の習得に三ヶ月かかると言われてるから、
標準 or 即効性の保守要件にHibernateは引っかからない。

865:デフォルトの名無しさん
09/11/19 01:41:20
JSFを勉強し始めて半年ぐらいの若造です。
■.jspの記述

<h:dataTable var="list" value="#{bean.dataModel}">
<h:column>
<h:inputText value="#{list.text}"/>
</h:column>
 ・・・
</h:dataTable>

みたいなテーブルを表示して入力部を設け、ボタンを押したら値をテーブルの型式で取得したいのです。
bean.dataModelはListDataModelを返します。

beanのスコープはrequestです。
どのように値を取得するのが賢いのか教えて下さい。



866:デフォルトの名無しさん
09/11/19 09:59:11
JAXBでのバインディングって、setとget以外のメソッドが混ざっている
JavaBeans形式以外のオブジェクトでは出来ないのでしょうか?


867:デフォルトの名無しさん
09/11/19 12:36:47
getter と聞くと、手がドリルの青い合体ロボットを想像してしまう僕は異常でしょうか?

868:デフォルトの名無しさん
09/11/19 16:24:49
配列([])の中身を調べる文字知りませんか?

例えばstring[1]だとしたら1と読み取ってくれるやつです

869:デフォルトの名無しさん
09/11/19 16:26:27
ねぇよ

870:デフォルトの名無しさん
09/11/19 18:12:31
文字ってなんだよ

>string[1]だとしたら1
も曖昧で分からん。

871:デフォルトの名無しさん
09/11/19 18:59:39
>>866
@XmlTransientでOK

@XmlAccessorType(XmlAccessType.FIELD)なら
マーシャリングしたくないフィールド(メンバ変数)を
transientにしとけばOK

872:デフォルトの名無しさん
09/11/19 19:08:06
というか、JAVAで配列使うな

873:デフォルトの名無しさん
09/11/19 20:01:30
>>872
なんで?

874:デフォルトの名無しさん
09/11/19 20:11:04
List使った方がいろいろ操作出来る

875:806
09/11/19 20:13:27
806のことも思い出してあげてください

>>873
javaには優秀なコレクションフレームワークが標準で装備されているので、配列ではなくそっち使おうぜ。
>>872はそういいたいのだと思う。
配列で十分だと思ったら、何でもかんでもコレクション使うことは推奨しない。


876:デフォルトの名無しさん
09/11/19 20:14:14
配列は使うな云々って本があったなぁ

877:デフォルトの名無しさん
09/11/19 20:15:11
配列を使うメリットはあまりない

878:806
09/11/19 20:19:30
配列を使うメリットは、高速かつメモリ消費が最小であること。

ローカルなメソッドの内部処理に用いる場合は、配列もありだと俺は思う。

おさらいだけど
配列:速度良 メモリ小 操作ミス多
コレクション:速度どうかな メモリ最小とはいかない 操作簡単安全

879:デフォルトの名無しさん
09/11/19 20:27:45
速度とかメモリとかにこだわる層はわざわざそういうこと言われなくてもわかってるはずだから、
とりあえず「ArrayList使っとけ」でおk

880:デフォルトの名無しさん
09/11/19 20:32:08
質問です。
HttpURLConnectionを使ってhttp通信を行います。
yahoo!などのサイトで接続した結果、問題なく接続し、情報を取得する事が出来ましたが、
問題のサイトに接続したところjava.io.FileNotFoundExceptionで弾かれてしまいました。
該当URLはブラウザでアクセスしたところ問題なく表示出来ます。
(パスワードやログインを要求するようなサイトではありません)
恐らくサーバー側で何かを見ているのではないかと思うのですが、
サーバーがチェックしてそうな項目を教えては頂けないでしょうか。

現在設定しているRequestPropertyは
Host、User-Agent、Accept、Accept-Language、
Accept-Encoding、Accept-Charset、Keep-Alive、Connection
で、値はブラウザで該当URLの確認ができた時と同じ値をセットしています。

881:デフォルトの名無しさん
09/11/19 20:33:56
LinkedListのメリットがよく分からない。
リストの半ばの挿入削除が速いって理屈は分かるが、
その場所に辿り付くまでは結局イテレートしてるわけで。

882:デフォルトの名無しさん
09/11/19 20:36:40
404 や 503 じゃないのならプログラム上のミスで、相手サーバーじゃないんだろうな。

883:デフォルトの名無しさん
09/11/19 20:42:19
>>880
お前モペ吉か?

884:デフォルトの名無しさん
09/11/19 20:45:43
>>881
メリットはあんたが言ってる通りじゃねーかw

885:デフォルトの名無しさん
09/11/19 20:46:44
ポインタ辿るだけだしなぁ。System.arraycopyで後ろ詰めるよりは速い。
でもgetFirstなどからして、stackとかqueueに特化した使い道が一番。

886:デフォルトの名無しさん
09/11/19 20:58:49
LinkedListは参照の数珠繋ぎだから、要素の最初から最後まで順番にアクセスするなら
ArrayListよりも速いはず。逆に、要素の~番目みたいなアクセスは破滅的に遅いと思う。
ランダムアクセスしない&削除と挿入が頻繁、ならむしろLinkeListの方が良いと思います。

ところで質問なのですが、
Javaで参照カウンタみたいな仕組みを実現したいのですが、なにか良い方法はないでしょうか。

887:デフォルトの名無しさん
09/11/19 21:01:58
さっきから「メモリ効率」「速いだろう」「思います」とかばっかりだけど、それじゃいつまでも上達しないだろうな。

888:デフォルトの名無しさん
09/11/19 21:03:54
>>886
staticな変数を持って、
コンストラクタ内でインクリメント
ファイナライズ内でデクリメント

いい方法ではないが、これしか思いつかなかった。

889:デフォルトの名無しさん
09/11/19 21:04:08
>>882
404や503にはならないのですが
そのサイトではRequestPropertyを全て外すと403になります
またyahoo!などのサイトで接続した結果、問題なく接続し、情報を取得する事が出来ました

890:デフォルトの名無しさん
09/11/19 21:04:17
>>886
でも実際試してみると ArrayList は LinkedList より結構速い

891:デフォルトの名無しさん
09/11/19 21:08:10
>>887
メモリ効率は上達にはかかせないだろ。

892:デフォルトの名無しさん
09/11/19 21:08:21
ArrayDequeueやConcurrentLinkedQueueがあるから尚更使い道が少なくなってきた。

893:デフォルトの名無しさん
09/11/19 21:12:27
うお。なんだ。
Java1.4時代に迷い込んじまったw

894:デフォルトの名無しさん
09/11/19 21:14:09
メ…メモリ効率だってよっwww

895:デフォルトの名無しさん
09/11/19 21:14:38
Dequeueは6から、Queueは5からなんだが。

896:デフォルトの名無しさん
09/11/19 21:23:08
>>894
おかしいと思う理由を書けよw
荒らしか?

897:デフォルトの名無しさん
09/11/19 21:28:54
メモリ効率とか無駄のないアルゴリズムを考えられない奴っているんだよ。
コーディングする楽しみなんてないんだろうな。

898:デフォルトの名無しさん
09/11/19 21:33:20
てかオブジェクト指向ってそういうもんだから構わんよ。
パフォーマンスの80%はソースコードの20%に依存するって奴だ。
裏を返せばソースコードの80%は保守性のが大事ってこと。

899:886
09/11/19 21:43:11
>>888
レスありがとうございます。
その方法だと、そのクラスのインスタンスがいくつ存在するか、
ということがわかりますね。参照カウンタと近い気がするので参考にさせていただきます。

900:デフォルトの名無しさん
09/11/19 21:50:44
メモリ効率を考えてコード書いて
数ヵ月後に、俺なんでこんなややこしいコード書いてんだ?
もっとeasyでいいやんって書き直している途中で
そういうコード書いてた理由を思い出す

revert

901:デフォルトの名無しさん
09/11/19 21:54:04
>>896
荒らすな鼻糞

902:デフォルトの名無しさん
09/11/19 22:02:42
複雑なモデルを複雑なコードで実装してるうちは素人

903:デフォルトの名無しさん
09/11/19 22:48:25
早く仕上げてボトルネックをテストしようぜ

904:806
09/11/19 22:51:41
>>886 何するのかわからないけど、ウィークリファレンス(弱参照)とかの機能もあるんだぜ。

俺の質問って場違いなの?()涙

905:デフォルトの名無しさん
09/11/19 22:55:29
JLayerMEでも使ったら>MP3

906:デフォルトの名無しさん
09/11/19 22:56:02
俺も興味あるな。Javaで参照カウンタが必要ってどんな処理?

907:デフォルトの名無しさん
09/11/19 23:30:01
>>904
弱参照と参照カウンタは関係ないだろ。

908:デフォルトの名無しさん
09/11/19 23:31:52
おまえらって普通のプログラミングはちょっとはわかってるっぽいけどdrawLineとかdrawOvalはわかるか?

909:デフォルトの名無しさん
09/11/19 23:34:23
>>908
知らないなら知らないって言えよw

910:886
09/11/20 00:06:24
>>906
長い上に上手く説明できませんが、
あるサイトを参考に、IDなどを通じてグローバルに参照できるオブジェクト群を管理するクラスを作ろうとしています。
このクラスは、外部からの要求に応じてオブジェクトを生成し譲渡するのですが、その生成したオブジェクトは自身のフィールドに保持します。
そして次に同じ要求があった場合は、新たに生成せずに保持していた同じオブジェクトを渡します。
一つのオブジェクトを不特定多数の外部で共有するためです。
問題は、保持しているオブジェクトが管理クラス以外のどこからも参照されなくなった時は、それを削除せねばなりません。
そのタイミングを知るために参照カウンタが必要なのです。

>>904
弱参照は使ったことないのですが、上記のような場合でもGCしてくれるものなのでしょうか。
Reference関連は勉強不足で何もわかりません。その辺も調べてみます。

911:デフォルトの名無しさん
09/11/20 00:15:02
ある書籍のwait/notifyのメカニズムの問題で
正解が下記のようになってるんですが、
consumerメソッドでwaitの下の
isFlag=falseがどうしても理解できません。
ここでfalseを代入してしまうと
上のproduceでisFlag=trueでnotifyを呼びだし
waitを呼び起こしてもすぐにまたfalseになり
いつまで経ってもwhileから抜け出せないと思うんですが・・・
私の見解が間違っているんでしょうか?

class MySync{
boolean isFlag = false;
public synchronized void produce(){
isFlag = true;
notify();
}
public synchronized void consumer(){
while(!isFlag){
try{
wait();
isFlag = false;
}catch(Exception e){}
}
}
}


912:デフォルトの名無しさん
09/11/20 00:19:13
>>910
昔、そういうの使ったことあるよ。

FacesContext.getCurrentInstace().getExternalContext()

の下にあるメソッドだったと思う。任意のクラスに対する、別クラスからのバインディングを取り扱う道具があるはず。

913:デフォルトの名無しさん
09/11/20 00:20:05
>>910
なるほど・・・
シングルトンを強制しつつも、参照されなくなったらGCに回収させるのですね。

914:デフォルトの名無しさん
09/11/20 00:22:24
なるほど。要はキャッシュの仕組みが作りたいわけね。

その用途ならソフト参照がいいかもね。
実際のところ弱参照は相応のライフサイクルが期待される
オブジェクトのキャッシュ方法としては適していない場合が多い。

URLリンク(www.ibm.com)
あたりを読んでみるとわかりやすいよ。

915:デフォルトの名無しさん
09/11/20 00:25:57
ウィークもいいけど、参照カウンタなんかCOMっぽくていいかもw
ほっといた方がよさそうだww

916:デフォルトの名無しさん
09/11/20 02:35:06
いちいちaddRefとかもういやだお

917:デフォルトの名無しさん
09/11/20 02:41:51
>>916
もしc/c++でもjvmでも、gcとかautoリソース解法とかの概念を使えるならそれをデストラクタに入れとくといいよw

918:デフォルトの名無しさん
09/11/20 06:37:05
項目と値があるTableをjavaで扱う時、
CollectionInterfaceか配列どのような方法を使うのがいいのでしょうか?

Tableからの情報を使って、別のTableの中から同じ文字列を持つものを検索したいと考えています。
ArrayListの二次元配列で作っていたのですが、
うまくピンポイントの情報が取得できません。
Array.get(int )はObjectのため、ArrayListのように指定しての取得ができないように思われます。

まだまだ勉強不足で見当違いの事を書いているのかもしれませんが、
それも含めてご指摘ご意見頂ければと思います。

よろしくお願いします。

919:デフォルトの名無しさん
09/11/20 08:37:57
>>918
HashMap を使わない理由は?

920:デフォルトの名無しさん
09/11/20 08:45:52
なにこのデジャブ

921:デフォルトの名無しさん
09/11/20 11:47:18
>>911
お前が正しい
そんな本は窓から投げ捨てろ

922:デフォルトの名無しさん
09/11/20 14:09:16
なんか、Javaの技術で面白ものってないですか?

面白いサイトとか本とか教えてくれるとありがたいっす。
今、経理やってるんだけど、2年くらいJavaやってました。

久しぶりにJavaやりたくなったんです。

よろしく><;

923:デフォルトの名無しさん
09/11/20 14:10:24
iTextとかおすすめ
PDF作れる
WebならApache

924:922
09/11/20 14:21:01
>>923
ありがとう。もう両方やったんです><;

J2EEの青い分厚い本でも今からかってこよっと・・あれなら、新しいEJBとか載ってそうだ。

925:デフォルトの名無しさん
09/11/20 17:10:57
Web系ならWicketとか

926:886
09/11/20 20:01:26
>>914
リンク先参考になりました。
有難うございます。

>>922
JOGLかProcessingはいかがでしょうか。
ゲームやプログラミングアートに興味があれば是非。

927:デフォルトの名無しさん
09/11/20 20:06:54
Javaの長所と短所を教えてください。

928:デフォルトの名無しさん
09/11/20 20:20:50
長所:Write Once, Run Anyware.
短所:リッチクライアント周りでは↑が嘘になる

929:デフォルトの名無しさん
09/11/20 20:21:37
Anywhere.だた。恥ずかし-

930:デフォルトの名無しさん
09/11/20 20:33:18
長所
 ともかく色々なプラットフォームで動く
 マニアックでない素直なOO言語
 強い型付け
短所
 玉虫色器用貧乏GUI、SWTなんてネイティブ移植しなけりゃ動かないし
 強い型付け


931:デフォルトの名無しさん
09/11/20 20:39:31
Map<String, ? extends MyInterface> map = new HashMap<String, ? extends MyInterface>();
これには閉口する。

var map = new HashMap<String, ? extends MyInterface>();
ってならんかな。提案レベルならすでにJSRにあるんだとは思うが。

932:デフォルトの名無しさん
09/11/20 20:40:55
そんなあなたに、はいScala

933:デフォルトの名無しさん
09/11/20 20:47:47
>>931
逆はjdk7からできるようになる予定だよ。

Map<String, ? extends MyInterface> map = new HashMap<>();

934:デフォルトの名無しさん
09/11/20 20:51:21
>>933
なるほど。IDEとの連携を考えてもそっちのが柔軟か。

935:806
09/11/20 22:06:28
>>905
ソースさっくりみたけど DLLたたいてるね。
携帯でMP3って意外と敷居高いな・・・

936:デフォルトの名無しさん
09/11/20 22:12:47
最新のJAVA2EEをインストールして暫くしたらパソコン起動するたびにコマンドプロンプトが起動しSUNのフォルダのdomain01内にログを作り出します。
サーバー?なのか不明なんですが、これ止めるには何処をどうしたら良いでしょうか。
よろしくお願いします。

937:806
09/11/20 22:13:08
>>886
RMIとか使ってプロセス間通信でもしてるわけじゃないのかな?
単独の仮想マシン上で動いてる場合、参照されなくなったらGC対象になるのはご承知だろうし。

弱参照しているばあい、他の参照がないとGC対象になるってだけなので、今回の件には使うところはないかも。
ちょっと違うことを想定してしまったので、わすれてOK(弱参照


938:806
09/11/20 22:26:26
長所と短所の話は 俺の好きな話題だったので・・・

長所
メモリ開放処理が自動なので簡単である。
そのためソースコードはCなどと比べると、とてもシンプルになり可読性がよい。
java専用高性能エディタが存在するため、生産性は高い(キリ
標準のライブラリがこれでもかってくらいそろってる。

短所
メモリ開放処理は自動だが、オブジェクトの開放契機などに注意を払わなくなるため。
イージーミスでメモリリークが発生する。
javaSE javaEE と javaMEは別物過ぎる、携帯電話などの端末でもSEで書いたものが動くことを期待する。



939:デフォルトの名無しさん
09/11/20 22:52:32
JLayerMEがDLL叩く?
そんなもん叩いてないがMMAPIのフルセットが実装されてないとJLayerMEは動かないからMIDPベースでは無理。


940:デフォルトの名無しさん
09/11/20 22:55:54
>>938
>>短所
>>メモリ開放処理は自動だが、オブジェクトの開放契機などに注意を払わなくなるため。
>>イージーミスでメモリリークが発生する。
あんまり見たことないけどね・・・
どんなの?

941:デフォルトの名無しさん
09/11/20 23:04:30
独自に配列スタックを作ろうとして、popされた時にnullで掃除しない場合とかか?
しかしArrayDequeueとか適切なクラスがあるしなぁ。

942:918
09/11/20 23:24:26
>>919
ありがとうございます。
ArrayListにHashMapを格納することで、解決できました。

943:デフォルトの名無しさん
09/11/20 23:28:20
>>941
うん。そういう教科書とかに載ってそうなのはわかるんだが、
実装レベルのイージーミスで起こるメモリリークってどんなの?


944:デフォルトの名無しさん
09/11/21 01:17:22
ライブラリにポインタ渡す時はライブラリを信頼しきってるから
あとでしっぺ返しされると超こまる

945:デフォルトの名無しさん
09/11/21 01:23:54
>>943
staticな変数にデカいコレクション突っ込んだまま放置してメモリを馬鹿食いするとか?
メモリリークというのは正しくないけど、症状はメモリリークに近いな。

946:デフォルトの名無しさん
09/11/21 01:53:48
Tomcatのコネクタか何かがログをそんな感じでほったらかしにしてたってのがあったな

947:806
09/11/21 14:30:28
イージーミスの話だけど
コレクションにぶち込みっぱなしで放置とか、そんなレベルの実装ね。
現実あったはなしだから、ソースレビューとかちゃんとやろうね


948:デフォルトの名無しさん
09/11/21 16:49:58
JTableがクリックされた時に、選択されている行の情報を取得するにはどうすればいいのでしょうか?

949:デフォルトの名無しさん
09/11/21 17:20:07
すみません、コンパイルできるんですが何も表示されません、助けてください
見にくいかと思いますが、お願いします
//<applet code="SnakeProg2.class" width="300" height="300"></applet>
import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class SnakeProg2 extends JApplet implements KeyListener { int actiontype = 0, count = 0; int x[] = new int[99]; int y[] = new int[99];
public void init()
this.addKeyListener(this); this.setFocusable(true);
}
public void paint(Graphics g) {
super.paint(g);
x[count] = 0; y[count] = 0;
for (count = 1; count <= x.length; count++) {
switch (actiontype) { case 0: count--; break; case 1: x[count] = x[count-1] + 10; g.drawPolyline(x, y, count); break;
case 2: y[count] = y[count-1] + 10; g.drawPolyline(x, y, count); break;
case 3: x[count] = x[count-1] - 10; g.drawPolyline(x, y, count); break;
case 4: y[count] = y[count-1] - 10; g.drawPolyline(x, y, count); break; } } }
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if(keyCode == KeyEvent.VK_RIGHT) {
if(x[count] == 300 || count == 100) {
actiontype = 0; } else {actiontype = 1;}
} else if(keyCode == KeyEvent.VK_DOWN) { if(y[count] == 300 || count == 100) { actiontype = 0; } else { actiontype = 2; }
} else if(keyCode == KeyEvent.VK_LEFT) { if(x[count] == 0 || count == 100) { actiontype = 0; } else { actiontype = 3; }
else if(keyCode == KeyEvent.VK_UP) { if(y[count] == 0 || count == 100) { actiontype = 0; } else { actiontype = 4; } } repaint(); }
public void keyTyped(KeyEvent e) {
public void keyReleased(KeyEvent e) { }}

950:デフォルトの名無しさん
09/11/21 17:33:59
>>948
public void mouseClicked(MouseEvent e) {
int idx = tbl.rowAtPoint(e.getPoint());
}
あとはお好きに。

951:デフォルトの名無しさん
09/11/21 17:49:53
>>948
JTableで文字列をクリックした場合だけセルを選択状態にする
URLリンク(terai.xrea.jp)

MouseInputAdapter ma = new MouseInputAdapter() {
public void mousePressed(MouseEvent e) {
Point pt = e.getPoint();
int row = table.rowAtPoint(pt);

952:デフォルトの名無しさん
09/11/21 17:53:13
>>949
不味い点が多すぎて。
とりあえず初期状態でpaint()が動くと、countでのforループの中でcount--して無限ループ。

953:デフォルトの名無しさん
09/11/21 17:57:00
ん、踏んだか。次立ててくるね。スレ立てるのひさびさだな。

954:デフォルトの名無しさん
09/11/21 18:00:17
次は

★★Java質問・相談スレッド134★★
スレリンク(tech板)


955:デフォルトの名無しさん
09/11/21 18:01:20


956:デフォルトの名無しさん
09/11/21 18:05:44


957:デフォルトの名無しさん
09/11/21 18:18:26
>>949
わからん

958:デフォルトの名無しさん
09/11/21 18:20:52
>>950-951
とんくす

959:デフォルトの名無しさん
09/11/21 18:27:50
誰か2chにソース貼るとき整形するツール作れよ


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