★★Java質問・相談スレッド182★★
■ このスレッドは過去ログ倉庫に格納されています
プログラミング言語Javaに関する質問スレです。 JavaScript, 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() を使え。※ 質問時の心得 ・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。 ・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。 前スレ ★★Java質問・相談スレッド181★★ https://mevius.5ch.net/test/read.cgi/tech/1518252580/ VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured あれ?rubyってJavaで作られてたの?じゃあJVM言語の一種? 何で クラス連番にしたらいけなひの? 便利だよ ほんと 調べたら Class.forName("クラス名"); ってあんまり推奨されてないみたいなんだけど 暗号化の関係かな? よおわからん >>606 いけなくないけど不便だよ。君が便利と感じるのは経験が浅くてまだ困難に直面した事がないからだと思う。ま、頑張れ。 >>606 数が多くなると管理できなくなるんだよ 18と19の間に18.5を入れたくなったり さらに18.3と18.4の間に18.35を入れたくなったりすると 完全に訳が分からなくなる 数ヶ月したらどの番号が何をやってるかなんて忘れてしまうから クラス名を番号にしてると修正が必要になったときに全部開いて確認する羽目になる 設計書に番号と処理の対応表を書いておけばよいけれども 設計書を開かないとわからないし設計書と実装を見比べて探し当てるよりは クラスにはだいたいの概要がつかめるような名前をつけたがよいよ どうせ作っておしまいだからと思ってたら完全に忘却したあとに 修正が必要になるなんてことザラにあるからわかりやすい名前をつけて 整理しとかないと泣きながら修正することになる みんなが一度は通る道だろうけど >>606 他人と違うことやる俺カッケー でもこういうやつの中から天才現れるんだよな。 まあ、頑張れ。 あ、クラスか。 クラスを連番にする意味はないと思うが、何をする処理ですかね? 一つ一つ名前考える手間が省ける。swingのボタンとかラベルとかテキストフィールドとか。 ボタン? それなら尚更ちゃんと名前つけてあげないとわけわかんない事になるのでは…… まあ程度問題やね。 コンポーネントが20個とか30個になると、全部一つ一つnewしてアクションリスナーに登録して、JPanelにaddするのがしんどくなる。 for文でまとめてやりたいという誘惑に駆られるから。 >>617 コンポーネントなら普通にやるじゃん。 チェックボックス10個並べるときなんかは配列にしてfor文で呼ぶし。 今時JavaでGUIアプリを作ること自体が全くもって普通ではないから無意味な例だな >>617 インスタンスならわかるけどクラスだしなぁ IDEでボタン配置とかやってるならクラス名は連番だろうが何だろうがあまり気にならんかもな。どのボタンがどのクラスかなんてのはIDEでわかるんだろうし。 Java的には連番はご法度だよな メソッド名も主語=オブジェクトに関連する動詞じゃなきゃだめ しかも英語で略語も禁止 SunのJavaの教科書はそう書いてる だからIDE使う 連番の入れ替えとか歯抜け追加起きたとき プロジェクト炎上するなこいつのは 1 2 5 4 9 31 6 とかになる やるなら、 inteface Hage { void pushShigeki(); } class Tako implements Hage class Hanako implements Hage Hage[] listKokyaku = new Hage[2]; listKokyaku[0] = new Tako(); listKokyaku[1] = new Hanako(); for(Hage aitsu : listKokyaku) { aitsu.pushShigeki(); } うは、俺天才 UMLからお勉強だな http://objectclub.jp/technicaldoc/uml/ こんなアホな設計者にカネばらまいて いざとなったらトンズラきめて 末端の派遣社員が鬱病になって 2chで粘着されて会社が潰れるのが目に浮かぶわww そうだな、Hageは不適切だった Enkeidatsumoshowがいいな 頭の中で勝手にエンジニアと決めつけてキレてるやつ怖いわ どう見ても素人だろこんなん というかどんな現場だろうがこのレベルの奴が自分で設計なんてさせられるわけないわ 現場にもいろいろあるんやで 失敗を積み重ねて人は成長するんやで 画面部品を一つ一つ異なるクラスにする意味あるの? インスタンスが連番なのじゃなくて? 都市伝説っぽいが、会社規則でクラスをコード+連番にしないといけないという愚痴ならどこかで読んだことがある どうも、都市伝説です 謎略称+連番はロクにまともなコードも書けない人間が略称→機能を暗記して周りにマウント取るためのテクニックとして確立されてる まぢれすすると page1.java page2.java........と作っていて 選択したページに移動したいだけなんすよね ちなみに趣味れす >>635 それ同じクラスを使いまわして引数で分岐させる方がラクだよ 普通に名前つけさせようとすると 英語もろくすっぽできないプログラマーがわけわからん名前つけるからな! いかなる創造的仕事もSE様のしごとだ プログラマーは工員のごとく黙って番号を付与された部品を組み立てておればよい 日本語でクラス名付けちゃえよ。その他変数名とかも。ソースを外国に輸出しないならそれでも良かろう。 Javaなんだし漢字が識別子に普通に使えるよ。入力の切り替えが面倒ってのはあるかも知れないが可読性は上がる。 それでMacのNFDもどきでハマるんですね、分かります ソースはアルファベット、コメントは日本語が一番見やすいが・・・。 間違った英語の単語を変数名に使われるのも迷惑 加減乗除余りの余りを surplus としたのがある surplus は割り算の余りという意味ではなくて 損益の余りという意味でしか使われないのだが 日本語は文字コードの問題があって、コメントは英語が基本と言われていますね。 643に文字コードとは何なのかから説明しないといけない問題 >>643 素人がエンジニアを名乗るの図 どこでさ仕事したらそんな歪んだ知識になるんだ 正規化の問題があるといえばあるか。 見た目全く同じファイル名とかUnicodeだと作れちゃうよね。濁点とか半濁点が曲者。 その辺を考慮してくれるテキストエディターでないといつかその内ハマる。 多分WindowsとMac混在で編集するとその時は早めに来る。 それては濁点はコーティンク規約て禁止しよう ◯と○や長音も紛らわしいから禁止た SpringBootの勉強中なんだけど、誰かわからないから教えてもらえませんか? Aという名前のプロジェクトとBというプロジェクトがそれぞれ存在していて、 AのプロジェクトからBのプロジェクトのある画面を呼び出すことは可能でしょうか? マルチプロジェクト?というので可能でしょうか? そもそも「画面を呼び出す」って訊き方が? ・httpとかネットワーク的な話なのか ・画面がコンポーネントになっていて、それを含むモジュールをimportして使いたいという意味なのか どっちにとっても、Spring以前の話だな。 @ComponentScanしてcontroller経由かViewResolverをchainする Queue<Integer>の合計を取る場合、拡張forを使用していますが、 stream().sum()の様な方法で求めることはできますか? q.stream().sum()でいいんじゃない? メソッドの処理時間を返すメソッドを作りたいと思ってるのですが実装方法がよく分かりません… 関数型プログラミングをつかえとネット上で書いてあったのですが中々理解出来ずにいます… やりたいこと: int runProcessTime(メソッド){ long start = System.currentTimeMillis(); // 引数のメソッドを実行 long end = System.currentTimeMillis(); return (int)end - start } どなたかこのポンコツめに実装方法を教えてください……よろしくお願いします… 試してないけどこんな感じかな int runProcessTime(Runnable proc){ long start = System.currentTimeMillis(); proc.run(); long end = System.currentTimeMillis(); return (int)end - start } // 呼び出し runProcessTime(() -> {you.doSomething();}); 例外投げんなと怒られたらCallable版も用意してreturn false Effectively finalで怒られたら引数の宣言にfinalでもつけて修正 ジェネリックな高階関数定義するのひたすら面倒だね。戻り値の有無や引数の数が一般化出来ないケースは実質使えない https://paiza.io/projects/Eh3ihZ2kTIdiBv-2ItS5wg?language=java 本番環境でも使いたければAOP使ってログ出力かな >>658-660 ありがとうございます 参考にしてもらって調べてみましたが、プロファイラやAOPを使ったログ出力をすればたしかに解決出来そうです! ただそろそろラムダ式とちゃんと向き合わなきゃ駄目かなと思っているので>>660 のコードを参考に読み解いてこうと思います! >>659 のコードにはとりあえずrunnable実装したクラス投げてみたんですがどうも上手くいかなかったです… これもラムダ式が理解出来てれは動作するんでしょうか…? もしかしてdoSomethingメソッドの戻り値をRunnable型のオブジェクトにしちゃった…? runProcessTime(() -> {System.out.println("呼ばれた");}); でいいんだよ 引数と戻り値のないラムダ式がRunnableとして型推論される >>662 とりあえず動作確認がしたくて試行錯誤した結果こんな感じなら通るのかなぁって思ってました https://wandbox.org/permlink/hflsLOytE8IIIZkt ご指摘の通りに書いてみたら上手く動作してくれました!ありがとうございます! https://wandbox.org/permlink/jl8r7LPtWxuNBPkh 型推論…便利だけど仕様理解してないとなんか不思議な感覚ですね アプリを開く→(複数のユーザーが)学習時間を入力→サーバーにデータを送信・保存→管理者がcsvで出力 というようなスマホアプリ(ユーザーが複数)を作りたいと思っているのですが 参考になる書籍等ありませんでしょうか。そもそも、実現可能なものでしょうか。 スレ違いでしたらすみません。 >>665 その辺詳しくて暇な学生でも知り合いにいたら焼肉でも奢って作ってもらえるレベル。 自分でやりたいならサーバーもアプリ開発も入門書から。 >>657-663 Ruby なら、考える事もない。標準ライブラリのbenchmark を使うだけw require 'benchmark' Benchmark.bmbm do |bmbm| bmbm.report( "#1" ) { sleep 1 } bmbm.report( "#2" ) { sleep 2 } end 出力 user system total real #1 0.000000 0.000000 0.000000 ( 1.005784) #2 0.000000 0.000000 0.000000 ( 2.000958) >>667 ゲロ遅Rubyでベンチマークとかアホかな 巣に帰れ C#erですけどこれからjava学ぶ価値はありますか? 煽り抜きで有償化後から敬遠されてるように見えて ここで聞くより自分の勤め先に聞いた方がいいんじゃね? C#ができるならJavaの現場にいきなり投入されても全然問題ないから、あえて自分で勉強しておく必要はないと思う JavaはC#でいうところのVB的なバカの受け皿がないので、C#に比べるとプログラマの平均レベルはかなり落ちる >>665 google sheet じゃいけないの? イミフ >JavaはC#でいうところのVB的なバカの受け皿がないので、C#に比べるとプログラマの平均レベルはかなり落ちる ポインタがない時点で平均以下の プログラマ向けだとは思うが・・・。 >>666 それならちょっと頑張ってみようと思います。ありがとうございます。 >>673 入力作業が面倒だったら時間を記録をしないのです。googlesheetでもできはしますが 続くような、入力がシンプルな、学生でも馴染みのあるアプリなシステムを作りたいのです。 だったらMicrosoftのPowerAppsとかでいいんじゃね ノンコーディングで入力フォーム付きのDBアプリができるよ >677こんな便利そうなものがあったのですね!・・・ちょっと調べてみます。 >>675 年収が? IQが? 技術力が? 言語にポインタがあったらそれが上がると? ポインタを極めて生活が豊かになるなら 組み込みエンジニアはもっと幸せなのじゃないだろうか 給料高いって話聞かないし身の回りを見渡してもそういう人いないから ポインタにそんな価値はありません VB.NETもC#も変わらぬ VBがバカの受け皿ならC#もバカの受け皿だ 使う言語によって賢さが変わるものではない ただしProlog使いだけは侮るな、変態だから ポインタの理屈は単純だけど、ポインタのポインタのポインタのポインタのポインタの・・・・・と増えていくと 見落としや勘違いが増えるの実感して、単純なほうがいいと思ってるのでせいぜい4〜5段階までにしてる。 頭が悪いのは否定しない。 >>683 4~5ってスゲーな 使っても3段までだわ ポインタは、全体把握とどの情報を実領域に 持たせるかという構想が必要だから、 バグの温床になって嫌われた。 逆に言うと、全体把握と構想力がある人(コーディング力が高い人)は、 ポインタがある言語を使った方が高性能のプログラムを使えていいと思う。 ポインタは元々少ないメモリ空間の昔に使われてきた プログラム自体を書き換えることで、違う処理をさせてきたわけだ 今はそんなことする必要は無く、ワークエリアも十分ある その中でわざわざポインタ使ってやる方がおかしい 個人的にはポインタよりも高度な関数型言語の方が難しい メモリの制約が少なくなって並列処理の必要が増した昨今に ポインタを理解していることに自尊心を持ち続けているようではまずいと思う ポインタ使えるC#のがプロ向けなんですか? C系言語で最もバランスの取れた言語を集中的に覚えたいです 受験勉強の弊害だろ、何の為にするのかが考えられない .| .| ∩___∩ | | ノ\ ,_ ヽ .| / ●゛ ● | .J | ∪ ( _●_) ミ 彡、 |∪| | / ∩ノ ⊃ ヽ ( \ / _ノ | | \ " / | | \ / ̄ ̄ ̄ /  ̄ ̄ ̄ ̄ ポインタは処理速度が速いからね。 (代入処理が少なくなるせい) 恐らく逆じゃないかな。 スタック上にオブジェクトを作れるとメモリーの確保が必要ないし常にキャッシュに載るので速い。 ポインタがない言語はだいたいポインタと同程度の大きさを持ついくつかのプリミティブしかスタック上に配置できないので、常にポインタを介した演算と同程度の速度しか出せない。 ってことでは。 ポインタと実際の実装はまた別の話では? コンパイラが頑張ればかなり最適化できるが すべてのオブジェクトをスタックにしか置けないと、事前にすべてのオブジェクト領域を用意しないといけない。 それは現実的ではないのでヒープが必要になり、ヒープへの効率的アクセスにポインタが用意される。 という順番かと。 スタックポインタの指す場所をキャッシュしないプロセッサはないので、コンパイラ関係なくスタック上は有利じゃないでしょうかね。 キャッシュミスで1000クロック失うこともあるわけですし。 ポインタの利点は、メモリ上でデータコピーの頻度が下がることだよ。 ポインタはデータを参照するだけで、コピー(代入)しないから。 >>700 Javaのオブジェクトもコピーしませんよ。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる