★★Java質問・相談スレッド182★★

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (アウアウウー Sa73-AAco [106.132.135.194])
垢版 |
2018/11/19(月) 11:37:06.10ID:C68x9bSia

プログラミング言語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
2020/04/21(火) 23:35:53.08ID:C52TTD3s0
エラー文貼って
2020/04/22(水) 04:01:43.60ID:M5XlvSVjr
>>927
普通に使えるから書き方間違ってんでしょ
2020/04/22(水) 17:53:16.23ID:TD6vt53g0
FileWriterやFileReaderを用いたファイル入出力処理では、
やはりthrowsではなく、try-catch-finallyを使った例外処理をすべきですか?
2020/04/22(水) 18:33:32.39ID:QyipDPr70
どの層でcatchすべきかはデザイン次第
個人的なツール等で利用者が困らないなら別に外まで投げっぱなしでもいい
いずれにしてもtry-with-resourse文は使うべき
2020/04/22(水) 19:14:33.76ID:TD6vt53g0
>>931
参考になります。
ありがとうございます。
2020/04/22(水) 23:56:55.34ID:isrmfS5f0
>>926
よきよき
934デフォルトの名無しさん (ワッチョイ ff01-9eV8 [111.90.14.57])
垢版 |
2020/04/23(木) 00:02:52.73ID:OS0IvuzA0
早すぎる最適化の典型例
2020/04/23(木) 00:54:08.15ID:sh2IntRG0
個別アプリでtry-catch構文を使うなとか嘗め腐った規約
共有部分で使いまくってるのに個別アプリで使うとだめな理由が一切わからない
規約作ってるやつが俺Sugeeeしたいのか
936デフォルトの名無しさん (ワッチョイ ff01-9eV8 [111.90.14.57])
垢版 |
2020/04/23(木) 01:04:14.00ID:OS0IvuzA0
>>935
まとめてロギングしたいとかじゃないかな
catchするならリスローしてねの規約があってもよさそうだけど
わからないなら聞いたら良いと思うよ
2020/04/23(木) 09:31:20.01ID:MgcChLvv0
同情してほしいのかw
2020/04/23(木) 17:29:55.27ID:+/WR4MAB0
初心者になるべくtry-catchを使ってほしくないという気持ちは分かる
例外が握りつぶされる
原因例外が途中で捨てられエラー発生元が分からなくなる
無意味なラッピングがされていてcatchがうまく書けなくなる
同じ例外のスタックトレースが何度も何度も出力される
もううんざりだよ
2020/04/23(木) 23:22:54.42ID:EqDE6vCO0
そんなこといったって、どうすりゃいいのさコロコロ(AAry
2020/04/24(金) 01:31:21.77ID:7OUYGVe4r
ヨシ!
catch(Exception e){
throw new Exception();
}
2020/04/24(金) 08:49:19.15ID:SZShfMPk0
例外のたらい回しや〜
942デフォルトの名無しさん (ワッチョイ 5361-Op/G [112.136.82.191])
垢版 |
2020/04/24(金) 12:03:25.18ID:oe7zjHr90
よくある↓のようなifで事前チェックさせる方式がなぜまずいのか考えてみよう。
if (resource.isAvailable()) {
resource.getData();
...
}
2020/04/24(金) 14:43:08.72ID:TokoipqW0
いや普通にロックかければいいじゃない。その例は良くない。
それにgetDataの根本のところでも同じようなことをやってるだろう。
2020/04/24(金) 15:22:40.00ID:+0niyonSM
atomicityを問題にしてるわけじゃないだろ

そこは事前チェックする場合だろうと例外でハンドリングする場合だろうと大差ない
2020/04/24(金) 15:42:12.97ID:TokoipqW0
じゃあ942は何がまずいのか分からん
2020/04/25(土) 05:32:13.99ID:EmF7EpXGd
初歩の初歩なんだろうけど
javaでデータを保持しておきたい場合ってどういう風にするのが一般的?
たとえば作った名簿(HashMapなんかを想定)を次に使うときまで保持しておいて、次回はそれを使って続きから作業したいみたいな
テキストで保存しとくとかいくらでもやりようは思いつくんだけど、セオリーを知りたい
2020/04/25(土) 06:22:35.23ID:4NLY0GvS0
tryの後の()の中に2つ文を書くことは出来ますか?
例えば、
try(FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fr);)
と書けますか?
2020/04/25(土) 11:40:04.07ID:ek8I9sztM
>>946
シリアライズでググれ
2020/04/25(土) 11:40:45.14ID:ek8I9sztM
>>947
tryの後は{}
2020/04/25(土) 12:09:14.21ID:4NLY0GvS0
>>949
{}の前です
Java7から導入された記述方式らしいのですが
2020/04/25(土) 12:40:24.18ID:pY24ooGqM
>>950
あ〜、できるよ
それはtry-with-resourceって名前
2020/04/25(土) 12:52:44.81ID:4NLY0GvS0
>>951
やってみます
ありがとうございました
2020/04/25(土) 19:13:40.59ID:4NLY0GvS0
たびたびすいません

https://pastebin.com/dTMz4gib
上のコードがコンパイルエラーになってしまうのですが、理由が分かりません
「identifierがありません」と表示されてしまいます
どなたかよろしければ、回答をお願いします
2020/04/25(土) 19:56:44.28ID:7cJ26G9d0
>>953
try(FileReader fr = new FileReader("matrixA.txt");
BufferedReader br = new BufferedReader(fr)) {
2020/04/25(土) 20:01:48.54ID:ft4DoFbAa
try(
ではなくて
try{
では?
2020/04/25(土) 21:13:46.97ID:OfMSEBEA0
>>953
変数宣言はtry ()の内側に書く必要がある
Java9あたりからは外で宣言しても良くなったけど、それでもeffectively finalであることが前提だからfrへの代入はNG
そもそもメソッド冒頭に宣言を集めてしかも取りあえずnullで初期化しとけってのは悪癖だからやめた方がいい
2020/04/25(土) 23:24:22.99ID:WvCOhEhy0
>>953
言いたかないけど質問のレベルが低すぎる気がする。
変数のスコープも理解できてないようだし、
それコピペしてきて動けばいい感じで動かしているだけだよね。
学校の宿題なんだろうけど、もっとちゃんと勉強しようよ。
ここでサボって人に聞いたものを単純に覚えていたら
この先何も書けなくなるよ。形を覚えるんじゃなくて
意味を覚えよう。
2020/04/25(土) 23:49:36.24ID:4NLY0GvS0
答えてくれた方ありがとうございました

>>954
やっぱりそう書かないといけないんですね…

>>955
try with resource文に関してです

>>956
>メソッド冒頭に宣言を集めてしかも取りあえずnullで初期化しとけってのは悪癖
マジですか

>>957
すいません
スコープは理解しているつもりです
例外処理をあまり書いたことがなかったので…

学校の宿題ではありません
大学は数年前に卒業しています
2020/04/26(日) 10:51:45.92ID:BocD88xX0
>>958
文法規則を知らないって意味ではなくスコープとはどう活用すべきものなのかが把握できてないってことだと思うよ
たとえばクリティカルシンキングのスキルが不足している優しいイイ人は10年やっても残念なコードしか書けないことがよくある
もしプロとしてJavaを書いて金を貰っているならリーダブルコードのような良書を一冊読んでみるのをお薦めする
960デフォルトの名無しさん (ワッチョイ 1f02-Btmo [59.129.240.22])
垢版 |
2020/04/26(日) 11:59:50.88ID:aAS4CHj70
すいません初心者です助けてください…課題でいきなり詰まってます…
課題の言ってることはわかるのですが、いざ書こうとなるとうまくまとめることが出来ません…
解答例を示していただけないでしょうか…
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14223782454
長すぎてエラーになってしまったので知恵袋の投稿見ていただけると助かります…
2020/04/26(日) 12:04:35.25ID:0wpm4o+CM
>>960
★★ Java の宿題ここで答えます Part 74 ★★ [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1477625280/
962デフォルトの名無しさん (ワッチョイ d7b0-DEv8 [114.165.4.23])
垢版 |
2020/04/26(日) 12:05:05.54ID:f4V9z6xn0
Javaのgoldまで取得できたので実際に何か作ってみたいと思っています
Java + MySQL + Tomcatで作る掲示板とブログという本を参考に掲示板を作ってみようと思っているのですがこの本で問題ないでしょうか?
発売されたのは2005年みたいなので古すぎて参考にならないとかありますかね?
963デフォルトの名無しさん (ワッチョイ ff01-9eV8 [111.90.14.57])
垢版 |
2020/04/26(日) 12:14:02.60ID:47T+vKxr0
>>962
作るのに資格も本も必要ないググって作れるっしょ
964デフォルトの名無しさん (ワッチョイ ff01-9eV8 [111.90.14.57])
垢版 |
2020/04/26(日) 12:29:34.20ID:47T+vKxr0
>>960
https://paiza.io/projects/ybHyJcapWsMAVpEV6JQLUQ
965デフォルトの名無しさん (ワッチョイ 1f02-Btmo [59.129.240.22])
垢版 |
2020/04/26(日) 12:37:25.80ID:aAS4CHj70
>>964
親切にありがとうございます!!!
本当に助かります…
966デフォルトの名無しさん (アウアウウー Sa17-Lf76 [106.128.187.188 [上級国民]])
垢版 |
2020/04/26(日) 14:02:57.82ID:G0DkXyp/a
【 課題 】 https://drive.google.com/open?id=1QaPxq5C66ZQpcCyITgS2XCQDs44zoomy
       複数あるのでgoogledriveで課題内容を共有させていただきます
【 形態 】1. Javaアプリケーション
【 GUI  】
【 期限 】4月29日
【 補足 】丸投げです…申し訳ありません…
967デフォルトの名無しさん (アウアウウー Sa17-Lf76 [106.128.187.188 [上級国民]])
垢版 |
2020/04/26(日) 14:03:17.84ID:G0DkXyp/a
すいませんスレ間違えました…
968デフォルトの名無しさん (アウアウウー Sa17-Lf76 [106.128.184.230 [上級国民]])
垢版 |
2020/04/26(日) 20:56:15.37ID:2WL2jfIba
エクリプスでjunit使いたいんですけど、うまくいきません…
ここ見れば使い方わかるみたいなサイトってありますか?
自分でも調べてやってみたんですけど、「テストランナーjunit4のテストが見つかりません」と出てしまい困ってます…
2020/04/26(日) 23:02:21.88ID:IvO3yqTY0
>>962
2005年か

Ruby on Rails が流行ったから、
今はどの言語でも、Rails のコピーが隆盛で、

Java でも、Groovy で、Spring Boot などに変わった
970デフォルトの名無しさん (ワッチョイ ff01-9eV8 [111.90.14.57])
垢版 |
2020/04/26(日) 23:27:59.91ID:47T+vKxr0
>>968
ビルドパスにjunitのjarとhamucrestのjarを追加して
こういうクラス書いて実行すればできるっしょ

import org.junit.Test;

public class MainTest {
@Test
public void testA() {
System.out.println("hoge");
}
}
971デフォルトの名無しさん (アウアウエー Sa5f-Op/G [111.239.186.191])
垢版 |
2020/04/28(火) 22:04:38.77ID:NIccQJ3va
ttps://github.com/OneLoneCoder/olcPixelGameEngine/blob/master/Videos/OneLoneCoder_PGE_ShadowCasting2D.cpp
の416から425行の処理はjavaではどう書くのでしょうか?
2020/04/28(火) 22:41:02.37ID:96XBocG+0
Tuple相当のクラスに独自のhasCode()メソッドとequals()メソッドを定義してLinkedTreeSetに突っ込んだらどうかね
973デフォルトの名無しさん (ワッチョイ ff01-9eV8 [111.90.14.57])
垢版 |
2020/04/28(火) 23:33:36.32ID:4kUhwH6S0
>>971
https://paiza.io/projects/QlHbDweVK7Jz5Dui5QzsZQ
974デフォルトの名無しさん (アウアウエー Sae3-D935 [111.239.186.191])
垢版 |
2020/04/29(水) 09:13:39.21ID:GLkFkZ60a
>>972, 973
ありがとうございました。
ラムダを使えばきれいに書くことが分かりよかったです。
975デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 02:37:11.81ID:UCNL2IRg0
質問
マルチスレッドでコンストラクト中の状態を逸出させないということで
コンストラクタの中でインスタンスメソッドを呼ばないようにしましょうという原則がありますが
コンストラクタの中でインスタンスメソッドを呼びたいときもあると思います
そういうときみなさんはどうしていますか?

・コンストラクタの代わりにstaticのファクトリメソッドを作ってその中でnewしてインスタンスメソッドをコールする
・コンストラクタの中で呼びたいインスタンスメソッドを別のクラスに移動する
・シングルスレッドでしか使わないのでマルチスレッドの原則なんて気にしない、コンストラクタの中でインスタンスメソッドをコールする
・その他

アンケートみたいな感じですけどご回答いただければ幸いです
976デフォルトの名無しさん (ワッチョイ 82ad-48kr [27.139.77.105])
垢版 |
2020/05/06(水) 06:32:23.63ID:izcxg96Z0
>>975
https://irof.hateblo.jp/entry/2016/01/09/231631
2020/05/06(水) 07:43:10.31ID:4GtcOPgo0
>>975>>976 は書いてることが違う?
>>976 はコードに問題があれば100%バグが再現する
>>975 はマルチスレッドと言ってる
>>975 はどのような問題が起こるのかをまず説明して欲しい(知りたい)

コンストラクタな完了前にオブジェクト変数にインスタンス参照が設定される問題は私も知ってるけど
それはインスタンスメソッド呼び出しどうこうといった問題ではないし・・・
978デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 09:33:39.20ID:UCNL2IRg0
>>976
ありがとうございます!
ドキュメントに書く、オーバーライドできないようにすればおkということですね

>>977
> >>975>>976 は書いてることが違う?
同じです、結局のところそういうことです

> コンストラクタな完了前にオブジェクト変数にインスタンス参照が設定される問題は私も知ってるけど
それです、残念ながらそれです

コンストラクタでインスタンスメソッドを呼び出しても問題ないからやる派ですね?
2020/05/06(水) 11:58:04.95ID:q8N1X/Ij0
>>977,978
別の話が混ざり合ってるな
読んだ人は腑に落ちないか誤解すると思う
互いに密接で合わせ技もあるので完全に切り離すことはできないけど、一緒くたにすると影響や対処に漏れが出る

> マルチスレッドでコンストラクト中の状態を逸出させない
という表現に合うのはこれ
https://www.jpcert.or.jp/java-rules/tsm03-j.html
ただしコンストラクタとは別の初期化メソッドを提供する場合の話

コンストラクタ中から逸出させるなという規約はこれ
https://www.jpcert.or.jp/java-rules/tsm01-j.html
コンストラクタからのインスタンスメソッド呼び出し自体は問題にしてない
シングルスレッドの場合も問題がある

>>976はこれ
https://www.jpcert.or.jp/java-rules/met05-j.html
this逸出の話に比べるとかなり限定的な話
2020/05/06(水) 12:22:20.27ID:4GtcOPgo0
これってJVMのバグではないの?
JVMがコンストラクタが完了するまでインスタンス参照を変数に代入しないようになれば解決するんじゃないの?
なぜ不完全なインスタンスへの参照が変数に設定される可能性をプログラマーが考慮し続けてないといけないの?
今後もずっと続くの?
981デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 12:22:37.91ID:UCNL2IRg0
>>979
コンストラクタからインスタンスメソッドを呼びたいときどうしますか?
一般論ではなくて個人の考えを教えていただけると幸いです
2020/05/06(水) 15:56:16.60ID:q8N1X/Ij0
>>981
一般論うんぬんじゃなくて論理的かどうかで判断しないとプログラムは言うことを聞かないし
こんな匿名の場で少ないサンプルを集めたところでかりそめの安心感しか得られない
俺の脳内のタカアンドトシが女子か!!と激しくツッコミいれるわ
俺は上で挙げたルールに反しないように書くよ
983デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 15:59:37.62ID:UCNL2IRg0
>>982
ふーん
2020/05/06(水) 16:30:04.38ID:LXTBA+hx0
いったいどうしてマルチスレッドでコンストラクタからインスタンスメソッドを呼び出しちゃいけないなんて思ったのか、先に説明してくれよ。
>>979が出処と違うんか?
985デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 16:44:34.41ID:UCNL2IRg0
>>984
それですよ
僕が説明したとしてあなたは何ができますか?
986デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 16:45:55.31ID:UCNL2IRg0
僕が勘違いしてたことを追求してどうするんです?
僕をどうするつもりなんですか!?
987デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 16:47:10.35ID:UCNL2IRg0
いまのところコンストラクタの中でインスタンスメソッドをコールするのが全員のようですね
2020/05/06(水) 19:13:14.78ID:LXTBA+hx0
>>986
勘違いしていることに気がついたのなら先にそう言いいなよ。
>>985
君が勘違いしていると思ってその原因を探りたかっただけなんだが。
>>987
君が勘違いしていたのだから当たり前だろう
989デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 19:34:01.04ID:UCNL2IRg0
きっしょw
990デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 19:34:16.90ID:UCNL2IRg0
あ、ごめんつい本音がw
2020/05/06(水) 20:04:06.93ID:4GtcOPgo0
恥ずかしい人だなー
誠実な対応ができず茶化して誤魔化すような人って技術的にも成長できず頭打ちになる人が多い印象がある
992デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 20:05:25.12ID:UCNL2IRg0
>>991
それなw
993デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 20:06:07.59ID:UCNL2IRg0
>>988
お前のことだぞ
994デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 20:30:24.54ID:UCNL2IRg0
原因を探って何をするつもりだったのでしょうか
どうして原因を探ろうと思ったのでしょうか
そこを探っても質問の回答には辿り着けません

僕の質問はみんながどう考えてるかってことでした
自分はこう考えてるという意見が欲しかったのですが・・・
995デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 20:31:51.53ID:UCNL2IRg0
遺憾です、このスレは埋めさせていただきます
996デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 20:32:06.57ID:UCNL2IRg0
997デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 20:32:18.11ID:UCNL2IRg0
998デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 20:32:26.16ID:UCNL2IRg0
999デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 20:32:34.45ID:UCNL2IRg0
1000デフォルトの名無しさん (ワッチョイ 0601-6t4H [111.90.14.57])
垢版 |
2020/05/06(水) 20:32:42.71ID:UCNL2IRg0
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 534日 8時間 55分 36秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。