★★Java質問・相談スレッド165★★
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/10/20(日) 19:30:39.35JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
(p)ttp://www.wikiroom.com/java/?path,classpath
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※
前スレッド
★★Java質問・相談スレッド164★★
http://toro.2ch.net/test/read.cgi/tech/1378219684/
0607デフォルトの名無しさん
2013/11/12(火) 11:59:04.52独自クラスうんぬんじゃなくて
パッケージってのは名前の衝突を避けるため
分離化するのが目的
0608デフォルトの名無しさん
2013/11/12(火) 12:51:12.66自分がよく使う汎用クラスの管理はどうなさってます??
0609デフォルトの名無しさん
2013/11/12(火) 13:02:24.47旧SunMicroは、メアド文字列使って一意なjavaパッケージ名を求める手順を
提案すべきだったと思うんだが
0610デフォルトの名無しさん
2013/11/12(火) 14:14:09.34ライブラリ化。
0611デフォルトの名無しさん
2013/11/12(火) 15:01:24.51で、その外部jarライブラリを作るにあたって、結局パッケージ名も関わってはくると思う。
デフォルトパッケージ?
0612デフォルトの名無しさん
2013/11/12(火) 15:24:22.72>「クラスローダは自作するもの」と周知させれば
なしてわざわざ自作するの? どうしてあるものを使わないの?
>しかし 「このアプリの起動にはMavenが必要です」 な未来はイヤ。
頓珍漢な心配はまず実際にmaven使ってみてからにしてくれない?
All-in-oneなexecutable jarにせよ必要なjarがlibディレクトリ等に入ったtar.gz等に
せよ、配布用のパッケージをどうmavenで作成するかなんて世の中具体例に溢れている。
0613デフォルトの名無しさん
2013/11/12(火) 15:39:20.12>「derby.jarはバラさなければならない」 とか馬鹿なレスも減るべ。
そういうレスがいつあったのか、それとも単なる思い込みかよく分からんが、
「そのほうが楽なら」バラすしそれ全く手間じゃないし。
それこそpomにプラグイン指定すれば手作業ゼロで自動化できる話。
実行用のパッケージ作るのにオレオレなクラスローダー使ったりどこかの
Jar-in-Jarソリューション使うより、単にバラして動くならそっちの方が
シンプルだし確実。
0614デフォルトの名無しさん
2013/11/12(火) 15:50:32.580615デフォルトの名無しさん
2013/11/12(火) 17:00:43.73デフォルトパッケージは使っちゃダメ。
ちゃんと自分用のパッケージ名を適当に決めて、機能別にさらにパッケージに
分けて管理した方が良い。
自分でライブラリを作り始めるのであれば、まず既成のライブラリがどのように
パッケージを分けて管理しているのか観察してマネをしてみるところから始める
と良いと思うよ。
0616デフォルトの名無しさん
2013/11/12(火) 17:46:22.74それを言ったら、パッケージなしで書くのはhello worldまでになる。つまりパッケージ名は常に考えているので、ライブラリだからどうこうと言うことはない。
0617デフォルトの名無しさん
2013/11/12(火) 18:05:59.87これはこれでなかなか便利でな…
0618デフォルトの名無しさん
2013/11/12(火) 18:15:32.950619デフォルトの名無しさん
2013/11/12(火) 18:17:11.04static final Dimension DEFAULT_SIZE = new Dimension(400, 300) みたいにしたのですが、
このインスタンスってプリミティブ型と違って書き換えが可能なんですね・・・
こういう場合では縦横それぞれのプリミチブ型を記述するしかないのでしょうか?
せっかくDimensionというクラスがあるので使いたいと思うのですが
0620デフォルトの名無しさん
2013/11/12(火) 18:23:52.69すまん。自分もテスト走らせたり開発用のインスタンス起動するのにmavenつかうよ。
ただどうも便利なビルドツールとランタイムの区別がついていない人がいるようでつい。
0621デフォルトの名無しさん
2013/11/12(火) 18:39:56.50static final Dimension2D DEFAULT_SIZE = new UnmodifiedDimension(400,300);
setとか呼ばれたら、UnsupportedOperationExceptionを投げる。
Collections.html#unmodifiableListあたりを参考に。
クラス定義が面倒なら、キャストはしてはいけませんとコメントで書いといて、= new DImension。
Dimensionとして渡さないといけないような相手なら、簡便さとコストを優先しているのだろうから諦める。
0622デフォルトの名無しさん
2013/11/12(火) 19:13:42.76ありがとうございます、参考になります
単純にインスタンスをラップして、リードオンリーなメソッドのみ委譲して、
それ以外は例外を投げればいいんですね。
このあたり、自作のライブラリを作るときは参考にしようと思います。
繰り返しですが、だりがとうございました!
0623デフォルトの名無しさん
2013/11/12(火) 19:43:41.430624デフォルトの名無しさん
2013/11/12(火) 19:49:43.97Jframe.setSizeはDimension2Dでなくて、Dimensionでないとダメらしい。残念。
0625デフォルトの名無しさん
2013/11/12(火) 20:15:45.84デフォルトサイズ後から使わないでしょ?
0626デフォルトの名無しさん
2013/11/12(火) 21:02:46.430627デフォルトの名無しさん
2013/11/12(火) 21:07:10.910628デフォルトの名無しさん
2013/11/12(火) 21:36:03.83内部クラスの事を言っているのであれば外側のオブジェクトへの参照がいらないとき。
外側のオブジェクトへの参照が不要なときは可能な限りstaticにすべき。
0629デフォルトの名無しさん
2013/11/12(火) 21:51:18.210630デフォルトの名無しさん
2013/11/12(火) 22:22:40.16のでstaticが付いたら内部クラスとは呼ばない。
0631デフォルトの名無しさん
2013/11/12(火) 22:27:38.44static class Bar {} //???
class Hoge {
class Unko {} //内部クラス
static class Chinko {} //???
}
0632デフォルトの名無しさん
2013/11/12(火) 22:48:55.42別クラスにstaticメンバ見せたいけど
どうしてもメンバをprivateにしておきたい場合にstatic classを使う。
あるいはMap.Entryみたいに、成り行きでなんとなく使う
0633デフォルトの名無しさん
2013/11/13(水) 00:21:21.14JLabelに貼り付けて表示するプログラムを作りました。ですが*.pngファイルが表示されないのです。
何が原因でしょうか?pngファイルをJFrameのコンストラクタで読み込んでJLabelに貼り付けると
うまく行きます。またmouseClicked()にブレークポイントを設定すると、そこで停止します。
アドバイスよろしくお願いします。
public class sample01_38a
{
public static void main(String[] args)
{
my_frame frame = new my_frame() ;
frame.setBounds(0,0,500,500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
<略>
public class my_frame extends JFrame implements WindowListener,MouseListener
{
public void mouseClicked(MouseEvent e)
{
icon = new ImageIcon( "images/anomalocaris.png" ) ;
label = new JLabel("test label",icon,SwingConstants.CENTER);
getContentPane().add(label) ;
<略>
0634デフォルトの名無しさん
2013/11/13(水) 00:24:22.240635デフォルトの名無しさん
2013/11/13(水) 09:57:32.520636デフォルトの名無しさん
2013/11/13(水) 11:14:17.67外に見せたい定数とかに定義してんだけど。
0637デフォルトの名無しさん
2013/11/13(水) 12:07:42.92複数のインスタンスで別個に持つ必要がない定数に使う
0638デフォルトの名無しさん
2013/11/13(水) 14:11:01.81なるほど、分かり易い。
あるクラスをインスタンス化したら、中のインスタンスが見えてしまうんだが、プライベートとかつけても消えてくれない。。。
0639デフォルトの名無しさん
2013/11/13(水) 14:48:13.11インスタンス化される側のクラスの中でメンバー変数をprivate宣言する必要がある。
0640デフォルトの名無しさん
2013/11/13(水) 14:58:59.23かったぱしからprivateつけてみてはいるんだけどなぁ。
勉強します。
0641デフォルトの名無しさん
2013/11/13(水) 16:22:25.800642デフォルトの名無しさん
2013/11/13(水) 16:29:44.93ソースコード見ないと何とも言えんなあ
0643デフォルトの名無しさん
2013/11/13(水) 16:34:32.110644デフォルトの名無しさん
2013/11/13(水) 16:58:07.27他のパッケージから隠したいのか
同一パッケージの他クラスから隠したいのか
同一ファイル内の他クラスから隠したいのか
0645デフォルトの名無しさん
2013/11/13(水) 17:11:36.94ログイン状態を維持したままウェブページにアクセスするのってどうやるんでしょうか?
HTTPURLConnection から InputStream を開いてページソースを取得するのはできるんですが
クッキーとかセッションの扱いがいまいちわかってない程度の知識です
0646デフォルトの名無しさん
2013/11/13(水) 17:17:48.090647デフォルトの名無しさん
2013/11/13(水) 17:19:08.560648デフォルトの名無しさん
2013/11/13(水) 17:24:45.910649デフォルトの名無しさん
2013/11/13(水) 17:25:12.80クッキーについてだけ勉強すればおk
0650デフォルトの名無しさん
2013/11/13(水) 17:25:27.920651デフォルトの名無しさん
2013/11/13(水) 17:26:17.94ここで訊かずともどのクラス使えばいいのかおのずと見えてくる
0652デフォルトの名無しさん
2013/11/13(水) 17:26:55.790653デフォルトの名無しさん
2013/11/13(水) 17:27:34.730654デフォルトの名無しさん
2013/11/13(水) 17:27:35.24Javaの道:Servlet(6.セッション管理)
http://www.javaroad.jp/servletjsp/sj_servlet6.htm
Java Solution FAQ:セッションの開始・継続・終了
http://www.atmarkit.co.jp/fjava/javafaq/session/session04.html
セッションを使ったデータの書き込みと読み込み - セッション管理 - サーブレット入門
http://www.javadrive.jp/servlet/session/index2.html
0655デフォルトの名無しさん
2013/11/13(水) 17:29:15.420656デフォルトの名無しさん
2013/11/13(水) 17:33:17.10そーうーのはブログでやって
0657デフォルトの名無しさん
2013/11/13(水) 17:40:33.60軽くよんでみたんですけどこれってサーバー側で動的ページを表示させる方法にみえるんですけど
クライアント側でもHttpServletっていうクラスを使えばできるんですか?
まだServretの中身よんでないんですけど
方針がまちがってなければちゃんと調べてみます
0658デフォルトの名無しさん
2013/11/13(水) 17:42:50.89http://itpro.nikkeibp.co.jp/article/COLUMN/20070831/280847/
Lesson: Working With Cookies (The Java? Tutorials > Custom Networking)
http://docs.oracle.com/javase/tutorial/networking/cookies/
0659デフォルトの名無しさん
2013/11/13(水) 17:50:42.670660デフォルトの名無しさん
2013/11/13(水) 17:51:54.220661デフォルトの名無しさん
2013/11/13(水) 17:54:56.680662デフォルトの名無しさん
2013/11/13(水) 17:59:36.13というかそもそも読むだけしかできなくて
パスとIDをポストして結果をクッキーにためる処理もできないことに気づきました;;
Cookie = new Cookie();
url.post("id=...&pass=..., cookie); とかすれば勝手にクッキーに情報がたまって
url.openStream(cookie); みたいに引数でわたしたら勝手にクライアント認識してくれるようなクラスがあると思ってました;;
もうちょっと勉強しないと自分には無理っぽいです><
どうもおさわがせしました…
0663デフォルトの名無しさん
2013/11/13(水) 18:01:23.290664デフォルトの名無しさん
2013/11/13(水) 18:02:51.540665デフォルトの名無しさん
2013/11/13(水) 18:03:52.580666デフォルトの名無しさん
2013/11/13(水) 18:05:54.880667デフォルトの名無しさん
2013/11/13(水) 18:11:32.08CookieStore store = getCookieStore(); //クッキーのデフォルト保存先(メモリ)へのアクセス取り出して
CookieStoreのadd get removeを使ってファイルに書き出すなりファイルから読み込むなりして管理すれば十分だろJK
0668デフォルトの名無しさん
2013/11/13(水) 18:18:47.630669デフォルトの名無しさん
2013/11/13(水) 18:22:11.120670デフォルトの名無しさん
2013/11/13(水) 18:27:50.31まず、Javaのクラスは常にヒープを使用するというのが気になったので、
配列などにあらかじめインスタンスをたくさんnewして格納しておき、必要なときにその配列から
未使用のインスタンスを検索して取り出して、不要になったら配列に返す、という方法で
擬似的にスタックを再現しようと思いました。
叩き台としては、十分なreserve数を用意したArrayListにインスタンスをnewして詰め込んだあと、
インスタンスを使用するときにpop、返却するときにpush、という方法で作りました。
しかしながら、テストをしてみるとインスタンス化するクラスがよほど大きなクラスでない限りは
newしたまま放置するのとほとんど差がありませんでした(むしろ遅いときの方が多かった)
ここで質問なのですが、実際のところ、このような方法で素のnewやGCの機能を使うよりも
高速化を図ることはできるのでしょうか?
0671デフォルトの名無しさん
2013/11/13(水) 18:29:10.800672デフォルトの名無しさん
2013/11/13(水) 18:30:11.230673デフォルトの名無しさん
2013/11/13(水) 18:30:24.540674デフォルトの名無しさん
2013/11/13(水) 18:30:48.99Javaを使うことを諦める
0675デフォルトの名無しさん
2013/11/13(水) 18:34:30.15でも宿題だから仕方ない
0676デフォルトの名無しさん
2013/11/13(水) 18:38:40.65★★ Java の宿題ここで答えます Part 72 ★★
http://toro.2ch.net/test/read.cgi/tech/1337692704/
0677デフォルトの名無しさん
2013/11/13(水) 18:42:55.68特にコンストラクタが
0678デフォルトの名無しさん
2013/11/13(水) 18:43:00.11GCが発生しそうなプログラムなら速くなると思いますけどね
new って実際メモリ確保する時間はほぼ一瞬なのでインスタンス化の時間は変わらないと思います
0679デフォルトの名無しさん
2013/11/13(水) 18:48:28.61http://www.ibm.com/developerworks/jp/java/library/j-jtp01274/#3.1
0680デフォルトの名無しさん
2013/11/13(水) 19:09:17.52荒らすな雑魚
0681デフォルトの名無しさん
2013/11/13(水) 19:26:36.75みなさんありがとうございます。
>>679
とても参考になりました。今回とは関係ないけれど不変オブジェクトについても
大変興味深かったです。Scalaやりたくなってきた・・・
0682デフォルトの名無しさん
2013/11/13(水) 19:38:20.94誰がなんと言おうとプリミティブラッパーは普通の数値として計算に使おうとするとゴミだし
0683デフォルトの名無しさん
2013/11/13(水) 20:21:34.86こういった「その時代時代のパラダイム」に依拠したネイティブ・ハッキングは、たとえお金を積まれたとしてもあまりやりたくないね
0684デフォルトの名無しさん
2013/11/13(水) 20:22:16.37使い道の無いかもしれないオブジェクトを後生大事にプールしておくより、
短寿命のオブジェクトをポコポコ作る方が効率よい。
0685デフォルトの名無しさん
2013/11/13(水) 21:15:26.67関数型言語の名手で関数戻り値マンセーだから不変オブジェクトにこだわりがあるのもよくよく分かる。
ただ、オブジェクト指向言語を使ってライブラリを設計するというのは、不変オブジェクトやシングルトンだけでなく、関数型由来の方法以外の、他の方法論もたくさんある、ということは一言いっておきたい。
0686デフォルトの名無しさん
2013/11/13(水) 21:19:47.40そういうのは気にしなくていいと記事には書いてある
0687デフォルトの名無しさん
2013/11/13(水) 21:35:50.65Apache CommonsのHttpClientを使え。
標準クラスライブラリの範囲内でもCookie処理は実現できるが、
Java 6ではexpiresの解釈にバグが混入していたり(7以降は解決済み)、
http://www.javainthebox.com/2007/09/blog-post_4729.html
Set-Cookieの適用順が変わっているからエラーが起きたり、
http://tomott.cocolog-nifty.com/blog/2010/09/javecookie5-5d9.html
ライブラリとしての完成度や信頼性は高くない。
0688デフォルトの名無しさん
2013/11/13(水) 21:53:59.14レスありがとうございます
これすごいですね
ぱっとみた感じ HTTP のプロトコルわからなくても
フォームにかかれてるの name と value の Map を渡すだけで
POST リクエスト作ってくれるみたいですね
あれからもずっと調べてたりプログラムかいたり試行錯誤してたんですが
そもそもログインフォームのソースみながら
POST してクッキーを受け取る部分すらできなくて困ってました…
さっそく使ってみようと思います
0689デフォルトの名無しさん
2013/11/13(水) 22:04:33.070690デフォルトの名無しさん
2013/11/13(水) 22:20:27.17kwsk
0691デフォルトの名無しさん
2013/11/13(水) 22:26:41.080692デフォルトの名無しさん
2013/11/13(水) 22:38:05.92プリミティブ型は後方互換のために存在するって言い切って良いレベルだとでも?
0693デフォルトの名無しさん
2013/11/13(水) 22:44:53.710694デフォルトの名無しさん
2013/11/13(水) 22:51:11.460695デフォルトの名無しさん
2013/11/13(水) 22:56:57.70ていうか2ch用のネタの投下だってことに気づけw
0696デフォルトの名無しさん
2013/11/13(水) 22:59:37.130697デフォルトの名無しさん
2013/11/14(木) 00:14:14.09ようやくポストするとこまでいけたけど HTTP コード 302 が帰ってきてボディがからっぽになる;;
302 って軽く調べたらリダイレクトらしいんですけどリダイレクト先の URL がどこにもない;;
0698デフォルトの名無しさん
2013/11/14(木) 00:26:00.04本当にリダイレクト先のURLが書いていないのなら、それはサーバーが意図的にそういう設定にしてるってことだからどうにもできない。
POSTしたデータがおかしいからサーバーがエラー吐いてる可能性もある。
0699デフォルトの名無しさん
2013/11/14(木) 00:42:00.13HTTPヘッダのLocation見ろ。
そして、HTTP勉強してから出直せ。
とりあえずcurlとか使って、手動でできるレベルになれ。
0700デフォルトの名無しさん
2013/11/14(木) 00:54:08.77>>697
リダイレクト対応する場合は以下のコード追加しろ
http://d.hatena.ne.jp/lettas0726/20120806/1344264352
0701デフォルトの名無しさん
2013/11/14(木) 02:11:47.94MyInterfaceを実装するMyClassを総称型引数に持つList<MyClass>のインスタンスを、myMethod(List<MyInterface> myInterfaceList)に渡したい
0702デフォルトの名無しさん
2013/11/14(木) 02:13:27.380703デフォルトの名無しさん
2013/11/14(木) 02:17:10.340704デフォルトの名無しさん
2013/11/14(木) 02:23:48.84myMethod(List<? extends MyInterface> myInterfaceList)
こんな感じ?
0705デフォルトの名無しさん
2013/11/14(木) 02:25:57.18http://www.ne.jp/asahi/hishidama/home/tech/java/generics.html
0706デフォルトの名無しさん
2013/11/14(木) 02:54:54.39ありがとうございます
職場で試します
■ このスレッドは過去ログ倉庫に格納されています