★★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 それては濁点はコーティンク規約て禁止しよう ◯と○や長音も紛らわしいから禁止た 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のオブジェクトもコピーしませんよ。 そりゃそうでしょう。 プリミティブ以外は全部参照という割り切った仕様なんですから。 じゃあJAVAのオブジェクトが持つデータの本体はどこにあるの? あーそういう事ね。 それは話にならん。 結局、変数宣言する度にGC上にエリアとるんでしょ。 それじゃ遅いんだよ。 ポインタは物理アドレスを辿れることにメリットがある。 当然、重大バグを埋め込み安くなる。 いまどきJavaが使われるような用途でプログラムは物理アドレスにアクセスできませんよ。 物理アドレスはOSが管理しているので、言語によって変わる事は有りません。 1. ポインタを使う言語(具体的になに?) 2. Java 3. ポインタを使わない言語(具体的に何?) で、どれがどう早いのかまとめてくれ 君たちにはこれをプレゼントしよう。 NullPointerException >>714 それ単に誤ったところにアクセスしようとしたという意味で、それを頻発させるプログラマはダメすぎる。 Javaにはポインターが無いと聞いていたのにいきなりこんなもんが出ちゃってインド人もびっくり。 NullPointerException >>717 ぬるぽはオブジェクトがヌルのときに投げられるから Javaのポインタはオブジェクトを指すものなのだろうね C言語のポインタはメモリアドレスを指す 名前は同じだけど概念が違う おいおいマジかよw ちなみに「指すもの」を英語でpointerと言います。 >>717 Java は c++ のある種の進化系・理想形ですからね、今でも c++ で丁寧に書こうと思ったら自然に Java に近くなりますよ 初心者です。問題集で勉強中です 宜しくお願いします。 会員顧客データを更新する時のプログラムなんですが 未実装と記入ある箇所にどうのようなコードを入れてら良いでしょうか ざっくりで申し訳ありません /** * 顧客情報テーブルの指定の顧客情報を更新する * @param cutomer 顧客情報Bean * @return エラーメッセージ(処理成功時、null) */ public String update(CustomerBean cutomer) { LogUtil.println(this.getClass().getSimpleName() + "#update"); // TODO 未実装 return null; } >>722 // TODO 未実装 return null; これを // なぜか更新できない return "エラーです"; って直すを呼び出した人が治してくれると思う。 >>722 未実装もなにも、なんも書かれていないメソッドだろうにw >>724 はい。ここに何を書き込むべきか教えてください java インターフェイスでググると インターフェイスを実装したクラスを作って そのクラスのインスタンスからインターフェイスのメソッドを使うやり方しか でてこないんだけど インターフェイスって基底クラスみたいにつかえないの? >>729 有難うございます もうちっと考えてみます >>730 インターフェイスの意味がわかっていますか? >>730 基底クラスみたいに使う、って漠然としすぎだけど、 Java8からinterfaceに実装を記述できるようにはなったよ。 Java シルバー取りたいんだけどSE8と11なら11にしておいた方がいいの? 11にしようぜ たいして難しくなってないし、知識としてあえて古い方に限定することもない 初心者で2月に受けるけど全く黒本がわからない なんとなくコードは打てる 理解っているの?Java 初心者から脱する気が無いなら理解する必要は無いよ ただ初心者のまま時間が経つとそれはもう初心者じゃなくてただの無能だからね 数値の比較などの判定式の結果boolean型の仕組みが理解できていません int count =3; int limit =2; System.out.println(count <= limit); 結果はfalseなのですが、「3<=2」がなぜfalseなのでしょうか。 比較の左側ならfalse、右側ならtrue、などあるのでしょうか >>742 <=は小なりイコールの演算子だから 左の値が右の値より小さいか、もしくは左の値と右の値が同じときtrueになる 3 <= 2は、3は2以下であるということを表してて当然false >>744 適切な解答有難うございます 「左の値が右の値より小さいか、もしくは左の値と右の値が同じときtrueになる」 この文章で理解できました。 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる