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

■ このスレッドは過去ログ倉庫に格納されています
2020/05/06(水) 22:12:08.99ID:q8N1X/Ij0
プログラミング言語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質問・相談スレッド182★★
https://mevius.5ch.net/test/read.cgi/tech/1542595026/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2020/07/11(土) 13:40:10.45ID:lG7QfF8PM
Javaのラムダと検査例外の相性悪くねえ?
2020/07/11(土) 14:15:00.50ID:TUFHIPon0
相性悪いねえ
それでIOExceptionの非検査例外版とか追加されたし
なんだかなあ
2020/07/11(土) 14:17:38.47ID:DG/jvxiVM
やっぱ相性、悪いよな
検査例外さえなければ、もうちょいマシな言語になってたかと思うと惜しいね
335デフォルトの名無しさん (ワッチョイ 23ad-ucCN)
垢版 |
2020/07/11(土) 16:49:21.41ID:feKeXoV60
kotlin もよろしく
336デフォルトの名無しさん (ワッチョイ 23b9-Bqa1)
垢版 |
2020/07/11(土) 21:43:25.58ID:1/ChDc2A0
>>330
int

だからちょっとコードをいじって+1とリテラルを足したり
intを返すメソッドgetIntMethod()の返値を足したりすると
varの型が変わっちゃうわけ。

じゃあ、それを回避するためにどうするの?とか
varのせいで余計なテクニックが生じてくる。

これってボクシングによるコーディング上のメリットを潰してない?
337デフォルトの名無しさん (ワッチョイ 23b9-Bqa1)
垢版 |
2020/07/11(土) 21:50:53.29ID:1/ChDc2A0
俺はvarが無い言語を使いたい。kotlinもvarに汚染されてる
338デフォルトの名無しさん (ワッチョイ 2361-kYYI)
垢版 |
2020/07/11(土) 21:51:57.43ID:hkUZi6650
そういう時は明示すればいいだけじゃん。
何言ってんだか。
2020/07/11(土) 21:53:00.13ID:uqjut9zqM
varしか使っちゃだめな呪いでもかかってるのかな?
340デフォルトの名無しさん (ワッチョイ 23b9-Bqa1)
垢版 |
2020/07/11(土) 21:58:52.20ID:1/ChDc2A0
いつもワンパターンでやった方がコーディングが楽だから
varが常に使える汎用的なものでないなら
「この場合は先々でこういうコードになるからvar、この場合は型明示」
というような設計判断が必要になる。そういうのがコーディングを遅くする。
最初から型明示で一本化しておけば問題に遭遇しない。
2020/07/11(土) 22:03:13.03ID:vh6cxzEdM
適材適所
2020/07/11(土) 22:11:53.07ID:qPEuH3iw0
intとIntegerの違いを過度に恐れるのはぬるぽが怖いからだろ
Javaの限界だな
結局Kotlin使いたいという結論になる
2020/07/11(土) 22:15:31.12ID:qPEuH3iw0
Javaはローカル変数まわりでしかvarを使えない
だからあまり混乱しない
しかし素人集団が作る業務システムだと5000行のメソッドとかザラにある
そういう害悪から徹底排除していきたい
2020/07/11(土) 22:16:36.71ID:0BF0aQZE0
Integer + intやInteger + Integerでintが返されるのが以前からのJavaの仕様じゃないの?
345デフォルトの名無しさん (ワッチョイ 23b9-Bqa1)
垢版 |
2020/07/11(土) 22:20:29.88ID:1/ChDc2A0
>>344
int iと型明示されてたらそうだろうけど
var iだとどっちになってるのか分かりにくいという事
そもそもプリミティブだけじゃなくて
var i = method();
これは常に分かりにくい。IDEが無いと読めない
でもgithubとかgitクライアントとかでIDEの支援なしでコードを読む場合がある

varの良さは「何も考えずとりあえず型をvarにする」
という意識上のコストカットにあるはずだけど
そんなに楽に使えるものじゃない(使用場面を吟味しないといけない)という印象
2020/07/11(土) 22:20:54.21ID:bbZuG3D00
>>343
マジでそんなんあるの?
ひとつのメソッドで5000行ってやばくないか?
2020/07/11(土) 22:23:20.32ID:2ScJjjnd0
>>343
リファクタリングしがいがあるじゃないw
2020/07/11(土) 22:32:04.21ID:qPEuH3iw0
int i = method()
なんてのは実際にはまずない
実際にはこんなのが多い
Employee employee = getEmployee(employeeId)
くどいな
var employee = getEmployee(employeeId)
少しマシになった
2020/07/11(土) 22:34:46.34ID:qPEuH3iw0
>>346
すまんザラにあるは言い過ぎた
1メソッド5000行はまれにある
350デフォルトの名無しさん (ワッチョイ 23b9-Bqa1)
垢版 |
2020/07/11(土) 22:44:57.86ID:1/ChDc2A0
Employee employee←こういう無意味な変数名は避けたい

Employee updated = EmployeeStore.get(employeeId);
//updatedの更新処理
...
EmployeeStore.update(updated);

これで概ね意味のある名前になってる。
351デフォルトの名無しさん (ワッチョイ 2361-kYYI)
垢版 |
2020/07/11(土) 23:00:05.80ID:hkUZi6650
>「何も考えずとりあえず型をvarにする」
何言ってんだか。
2020/07/11(土) 23:05:26.05ID:0BF0aQZE0
>>345
var i = Integer + Integerでもiの型はint
varと関係なく算術演算の仕様だから
https://ideone.com/DY0QvE

チーム全員が仕様を理解してる環境にいるなら
var i = getInteger() + 1;のようなケースでvarを使ってもいいと思うし
そうじゃないなら使わないよう規約で決めとけばいいだけ
353デフォルトの名無しさん (ワッチョイ 23b9-Bqa1)
垢版 |
2020/07/11(土) 23:22:53.17ID:1/ChDc2A0
規約で決めとけばいいというけど
Java案件においてvarが使われてるか、Javaプログラマーがvarに慣れてるか
ばらばらになっていくからJavaエコシステムの悪化になる。

varを使って何かメリットがあるならまだいいけど、何もないように思う。
「冗長な記述がなくなって可読性が上がる」という主張が全く分からない。
354デフォルトの名無しさん (ワッチョイ 9b01-2pUR)
垢版 |
2020/07/11(土) 23:25:39.92ID:JFnadz6+0
var使いまくってるけどわかりにくくて困ったことはあまりない
コードがスッキリして見通しは良くなった気がする
var便利だよ、みんなも使いまくったら良いと思う
355デフォルトの名無しさん (ワッチョイ 9b01-2pUR)
垢版 |
2020/07/11(土) 23:27:41.07ID:JFnadz6+0
varは簡単なコードが簡単に見えるっていうのが良いよね

大したことやってないのに長々とクラス名が書かれてあたかもすごいこと
やってるように見えるのはイヤ

クラス名を省略したらわかりにくくなるしvarは便利
2020/07/11(土) 23:30:25.65ID:o8K5Yo+sM
意識の高いJava使い達はローカル変数の型にもインターフェイスを使うべきと主張し、他言語の型推論を見下していたわけだけど
梯子外されちゃってこれからどうすんだろうね
2020/07/11(土) 23:41:47.31ID:TUFHIPon0
ソースコードにvarが残らないほうが良いよな
型推論って静的に型が決まるじゃん
ならIDEでvarって入力したらそのときに型を解決してEmployeeになれば十分だったんじゃないか?
入力の手間も省ける
結果のソースコードの可読性も損なわれない

IDEが当たり前の世界なんだから、言語としてコードを短く書けるということにこだわり過ぎないで欲しいな
358デフォルトの名無しさん (ワッチョイ 9b01-2pUR)
垢版 |
2020/07/11(土) 23:42:21.27ID:JFnadz6+0
認知バイアスの一種に、人間が新しい事実に直面したとき、それまで持っていた考えに固執してその考えを徐々にしか変化させられない
というのがあるからねー、それを乗り越えるのは実際に体験してみることなんじゃなかろうかと
新しいことを取り入れることをやめると時代に取り残されるだけだから
新しいものは使いまくってみるのがいんじゃないかなーと思う
359デフォルトの名無しさん (ワッチョイ 23b9-Bqa1)
垢版 |
2020/07/11(土) 23:59:22.06ID:1/ChDc2A0
>>357
それは新しい発明だな
メソッドを書きあげたらメタコンパイルで
varを使ったコードからvar無しコードに変換する
良いアイデアかもしれん
ある種のメタコンパイルを駆使する事でプログラミング言語の在り方が変わるかもしれん
2020/07/12(日) 05:28:10.73ID:A+udV7kVd
>>358
一番Javaのスレらしからぬレスだな

こういうメンタルの人たちはそもそも言語選択の段階でJavaなんか浮かんでこなさそう
361デフォルトの名無しさん (ワッチョイ ad61-kYYI)
垢版 |
2020/07/12(日) 08:43:00.59ID:8yPf51M+0
Scalaとかkotlinの場合は、valファーストみたいな考え方が定着しているが、
varしかないJavaだと定着しにくいわな。
362デフォルトの名無しさん (ワッチョイ 23ad-skOr)
垢版 |
2020/07/13(月) 04:28:00.53ID:9EBd4T6S0
KotlinのvalはJavaだとfinal付けた宣言と同じかな?
363デフォルトの名無しさん (アウアウエー Sa13-c9t6)
垢版 |
2020/07/13(月) 07:54:31.81ID:V+zIL/Eba
のとおり
364デフォルトの名無しさん (ワッチョイ b110-9pMF)
垢版 |
2020/07/18(土) 22:38:25.37ID:wxt1SBQN0
Javaエンジニアの転職用のおすすめの成果物ってなに?
2020/07/18(土) 22:47:02.05ID:VnYLtQRAM
要件定義書
2020/07/19(日) 00:32:20.36ID:kCSCaoIZ0
節子、要件定義書はユーザが書くもんや
2020/07/19(日) 00:52:44.46ID:K8KObqvM0
>>366
要件定義から行う仕事なんてしたことも見たこともない
超下流のコーダーさん?
2020/07/19(日) 01:35:06.40ID:upLy8n3G0
兄ちゃん、なんで要件定義書とRFPを混同してしまうん?
2020/07/19(日) 06:02:10.88ID:kCSCaoIZ0
>>367
要件定義はユーザの仕事
請け負いで丸投げされてるん?
2020/07/19(日) 06:09:47.05ID:kCSCaoIZ0
要件定義は開発者がお手伝いをすることはあってもあくまでもユーザの持ち分だよ、丸投げされて自分の仕事だと思ってるだけじゃないかと
2020/07/19(日) 06:10:44.18ID:kCSCaoIZ0
>>368
どっちもユーザが書くものだよ
2020/07/19(日) 06:49:58.96ID:h1wfGu7fd
SIジジイのエクセルのお話なんてどうでもいいから言語の話してよ
どうせJava1.8すら使えない古臭いとこなんでしょ
2020/07/19(日) 07:05:46.34ID:kCSCaoIZ0
くっ・・・なぜそれを
2020/07/19(日) 09:51:11.26ID:K8KObqvM0
そんな認識だから老いたら使い捨てにされるんだと思うよ?
小さい仕事でも、ユーザの漠然とした妄想から完成させることを学んだほうがいい。
2020/07/19(日) 09:56:39.08ID:CbpSzaa/0
派遣奴隷の一時雇いのコーダーがそんな上流に関与するわけないだろ。
関与しないんじゃなくて、関与できない。無能のゴミクズだから。
2020/07/19(日) 09:58:10.91ID:K8KObqvM0
自己紹介ももう間に合ってます。
2020/07/19(日) 12:32:29.88ID:eo122ZhDd
お前も>>374で自己紹介してるじゃん
ブーメラン上手だね
378デフォルトの名無しさん (ワッチョイ ee02-PDgx)
垢版 |
2020/07/19(日) 12:59:10.23ID:OVvPblbF0
お前らリアルでもこんな程度の低い喧嘩するの?
2020/07/20(月) 20:15:25.36ID:vJ2ISq+M0
句読点マンはただのなんちゃっての荒らしだろ
仕事したことないのに雑談スレでもいっつも知ったかぶりで頓珍漢なこといってるキチガイだから
380デフォルトの名無しさん (ワッチョイ 5ab9-sTnA)
垢版 |
2020/07/21(火) 05:48:51.37ID:3tWEjcVj0
句読点で個人を識別できる、特定の人物の異なるIDのコメントを特定できていると思うのは病気
2020/07/21(火) 06:03:12.02ID:mDiZ6cR10
よぉキチガイ
382デフォルトの名無しさん (ワッチョイ 5ab9-sTnA)
垢版 |
2020/07/21(火) 07:19:22.60ID:3tWEjcVj0
俺の書き込みいくつか挙げてみて
383デフォルトの名無しさん (ワッチョイ 5ab9-sTnA)
垢版 |
2020/07/21(火) 07:34:54.50ID:3tWEjcVj0
>荒らしだろ
>よぉキチガイ

こういう発言は確実にコミュニティにとって害悪だから辞めて欲しい
2020/07/21(火) 08:17:00.45ID:mDiZ6cR10
精神病院に行こうなキチガイ
385デフォルトの名無しさん (ワッチョイ ee01-XySS)
垢版 |
2020/07/21(火) 16:58:54.04ID:NpytZS490
>>380
そこでAIですよ
2020/07/23(木) 14:26:07.44ID:EM/Nepkm0
androidでトランプのゲームを実装していて行き詰まりました
イベントループがあってupdate(delta)とdraw(Canvas,delta)を各オブジェクトが呼ぶような実装です
flashを参考にtweenerというクラスを作って
オブジェクトをtweenerに渡すとアニメーションができるようにしました
しかし、tweenerにもupdateとdrawを呼ばないといけないため
元のオブジェクトとtweenerと両方がupdateとdrawを呼ぶため
オブジェクトが二重に表示されてしまうクソ設計でした
一般にアニメーションをクラス化するのにどういう方法がありますか
並行して処理したり逐次で処理したりが選べるといいのですが
自分の頭では限界です
2020/07/23(木) 16:42:10.92ID:VwI/djxX0
androidはjavaではありません
388デフォルトの名無しさん (アウアウエー Sae3-Ar/h)
垢版 |
2020/07/23(木) 17:11:16.56ID:otdPxTIka
>>386
AndroidはJavaのようでJavaじゃないので別のAndroidスレへ行きましょう
そしてデバッガーを使って処理を追いかけましょう
2020/07/23(木) 17:17:22.14ID:XY8OSufi0
分からないから外に追いやる無能な俺たちを許してくれ
ここは学生レベルか競プロ程度のことしか分からない人達の集まりなんだ
390デフォルトの名無しさん (アウアウエー Sae3-Ar/h)
垢版 |
2020/07/23(木) 17:38:59.17ID:otdPxTIka
ええ、ご自身で原因と対処法を書かれていますのでこちらでそれ以上わかる事はございません
>>386
【原因】クソ設計でした
【対処法】
並行して処理したり逐次で処理したりが選べるといい
2020/07/23(木) 18:54:40.33ID:61Ja/AqO0
Androidスレはどこよ
392デフォルトの名無しさん (アウアウエー Sae3-Ar/h)
垢版 |
2020/07/23(木) 19:12:38.23ID:otdPxTIka
[タイトルで検索]🔍
2020/07/25(土) 11:59:44.47ID:nH9VX+zP0
リモートデバッグの場合にはHot Code Replaceは使えないんですか?
2020/07/25(土) 12:19:22.39ID:lvLHFRIva
>>393
VSCの事ならスレチ
だいたいリモートでデバッグってクライアントで起動してるのか
サーバーで起動してるのかでコンパイルしてるマシンが違うだろうに
2020/07/25(土) 12:26:01.12ID:CLKbPK7s0
Androidのことじゃないかな
だから俺は無視してたんだけど
2020/07/25(土) 12:43:18.35ID:S/hmdynOa
Android Studio だと Hot Code Swappingって言うんじゃ・・
replaceは置き換えでクライアントとサーバー間
Swapは交換でエディタとバーチャルデバイス間
どっちも似たようなもんだけど
397デフォルトの名無しさん (ワッチョイ fb01-hxF4)
垢版 |
2020/07/25(土) 12:44:14.28ID:dauW6/ij0
いやらしい
2020/07/25(土) 12:49:10.35ID:y1ZBGfCN0
VSC? Android? 何の話だ?
リモートデバッグもホットコード置換もJVMの古典的な機能だろ
リモートデバックでは置換はできないはず、大概別VMだしロードされた位置にあるclassやjar自身が変わらないし、置換できる方が不自然だと思う
2020/07/25(土) 13:19:07.58ID:nH9VX+zP0
>>394
Eclipseの話です
リモードなのでプログラムは別のマシンで起動してます
サーバーはGlassFish

>>396
すいませんJava経験浅いので色々種類があるのはシリませんでした
デバッグ中にブレークポイントで止めてメソッドの中身を修正するとすぐに反映される機能のことです

>>398
逆に言うとclassがどこに有るかわかればイケるということでしょうか?
例えば「ソース変更検知→build→rsyncでサーバーにclassを送信」する自作スクリプトとか
2020/07/25(土) 14:09:07.54ID:P/SMu1Ur0
>>393
賢い質問のしかた
https://www.ranvis.com/articles/smart-questions.ja.html
2020/07/25(土) 15:21:24.99ID:y1ZBGfCN0
>>399
クライアントだけでなくサーバー側もEclipseコンパイラでビルドしておけば置換できるらしい
http://dplatz.de/blog/2018/java-hot-code-swapping.html
ついでにここの筆者も同じことで驚いているけど、長年Javaで開発してるのにホットコード置換を知らない人は多いみたいだな
2020/07/25(土) 17:09:07.27ID:nH9VX+zP0
>>401
情報どうもです
gradle-eclipse-compiler-pluginとやらを試しましたがビルドエラー(´・ω・`)まだ先は長そうです
ちな>>399で思いついたsshでclassを送信するアイデアは効果なし
単純にclassを置き換えるだけでは意味がないみたいですね…
403デフォルトの名無しさん (ワッチョイ 5110-pSrU)
垢版 |
2020/07/28(火) 19:48:48.58ID:QYiJZeTL0
index.xhtmlとbeanを連携させてからもう一つ別のxhtmlファイル作って別のbeanクラスと連携させることってできないの?
2020/07/29(水) 16:00:54.37ID:EYlQulrhM
なんで今どきXHTMLなんか使ってんだよw
2020/07/29(水) 16:01:16.30ID:EYlQulrhM
なんで今どきXHTMLなんか使ってんだよw
2020/07/29(水) 21:54:50.30ID:XHby/Lgy0
Java EE 8
データソースを動的に決定したいんですけどなんかいい方法ないですかね?
より具体的に言うとHost、Port、User、Passwordを環境変数で指定したいです

@DataSourceDefinition ← ソースに定数ベタ書きは論外...
web.xml ← ビルド時差し替えは出来るけど実行時に変更できないのでダメ...
407デフォルトの名無しさん (ワッチョイ 4161-INOy)
垢版 |
2020/07/30(木) 10:29:37.00ID:pj6/aIsg0
System.getenv()
2020/07/30(木) 12:27:57.74ID:VqHv0XM70
spring bootを使うとデータソースの動的変更ができるみたい、知らんけど
2020/07/30(木) 12:31:52.70ID:w/yk6K7I0
bootなら設定不要で環境変数で設定できるね
JavaEEでそういうことができないのだとすると辛いな
2020/07/30(木) 18:36:24.37ID:VqHv0XM70
Java EEではbootが使えないの?
2020/07/30(木) 19:18:20.48ID:VqHv0XM70
CDIじゃだめか?
412デフォルトの名無しさん (ワッチョイ cdf1-SFhf)
垢版 |
2020/07/31(金) 15:32:38.50ID:POkjU+r00
Eclipseはじめたばかりですが
背景色を黒系にしたいのだけど
そのための設定はどこをいじればいいでしょうか?
413デフォルトの名無しさん (アウアウエー Sa22-DfbS)
垢版 |
2020/07/31(金) 15:35:04.09ID:q3J+IOFQa
>>412

Eclipse統合M36【Java/C++/Ruby/Python/Scala】 [無断転載禁止]©2ch.net
https://itest.5ch.net/mevius/test/read.cgi/tech/1503723668
2020/08/01(土) 08:05:19.17ID:ZDBQ6bpl0
皆開発環境eclipseだけどatom使ってる人いないの?
415デフォルトの名無しさん (ブーイモ MMbe-SFhf)
垢版 |
2020/08/01(土) 08:50:37.12ID:hCmXm23hM
いかなる点でatomよりVSCodeが優れていると聞いて
もうじきatomは消滅すると聞いた。
416デフォルトの名無しさん (ワッチョイ faa5-JYmi)
垢版 |
2020/08/01(土) 09:21:36.80ID:notoYvF50
M$がグループごと買収して作ったのがVSCodeじゃなかったっけ
2020/08/01(土) 16:48:59.15ID:jILzPVKB0
WebカメラからH264のrtspを受信して、mp4ファイルに出力したいです。
2020/08/01(土) 16:51:28.62ID:jILzPVKB0
>>417 途中で送信してしまったので続きです。
PureJavaならオープンソースのライブラリでも大丈夫です。
2020/08/01(土) 17:04:25.72ID:N2vdAsng0
頑張れ
420デフォルトの名無しさん (ワッチョイ fa55-xE3T)
垢版 |
2020/08/02(日) 12:36:44.63ID:hOgQnHyE0
Robert Segewick and Kevin Wayne著『Algorithms 4th Edition』では、ジェネリクスを使って、スタックを実装しています。

文字列のスタックの配列を作る時には、以下のように書かなければならないと書いてあります。

Stack<String>[] a = (Stack<String>[]) new Stack[N];

一方、Itemが型パラメータであるとき、Item型の配列を作るには、以下のように書かなければならないと書いてあります。

a = (Item[]) new Object[cap];

自然に、なぜ以下のように書かないのかという疑問が思い浮かびます。

Stack<String>[] a = (Stack<String>[]) new Object[N];

こう書かない理由が以下のように書かれていますが、これが何を言っているのか分かりません。

You might have expected to use Object instead of Stack. When using generics, Java checks for type safety at compile time,
but throws away that information at run time, so it is left with Stack<Object>[] or just Stack[], for short, which we must cast
to Stack<String>[].

何を言っているのでしょうか?
421デフォルトの名無しさん (ワッチョイ fa55-xE3T)
垢版 |
2020/08/02(日) 12:39:17.55ID:hOgQnHyE0
特に、

When using generics, Java checks for type safety at compile time,but throws away that information at run time,

の意味が分かりません。
422デフォルトの名無しさん (ワッチョイ fa55-xE3T)
垢版 |
2020/08/02(日) 12:41:56.68ID:hOgQnHyE0
ちなみに、

type safetyとは何か知りませんし、
at compile timeとat run timeというタイミングの違いによってどういう影響があるのかも分かりません。
423デフォルトの名無しさん (JP 0H62-3SEW)
垢版 |
2020/08/02(日) 12:48:47.81ID:H7597eyiH
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ

☆ VM + ASM を書いた (C#, DX) * x86 ではない!
ttp://up.x0000.net/files/TSimulang.zip
☆ malloc / free を実装してみた (C#)
ttp://up.x0000.net/files/TMallocTest.zip
2020/08/02(日) 13:24:35.87ID:xoqILXiMM
>>420
書籍が古いんでしょ
つ var a = new Stack<String>[N];
425デフォルトの名無しさん (ワッチョイ ce01-Nz8z)
垢版 |
2020/08/02(日) 13:47:16.78ID:HWQVFDgv0
>>424
ジェネリクスの配列は作れないんよ

>>420
> 自然に、なぜ以下のように書かないのかという疑問が思い浮かびます。
> Stack<String>[] a = (Stack<String>[]) new Object[N];

実行できないからでしょ
Objectの配列をStackの配列にキャストできないから
実行時にObjectになるのはジェネリクスの型であってStackではないです
426デフォルトの名無しさん (ワッチョイ ce01-Nz8z)
垢版 |
2020/08/02(日) 13:53:28.09ID:HWQVFDgv0
> When using generics, Java checks for type safety at compile time,but throws away that information at run time,

ジェネリクスを使うとき
Javaはコンパイル時に型の安全性をチェックします
しかし、実行時にはその情報を破棄します

と、いうことなので
ジェネリクスの型が正しいかはコンパイル時にチェックされて
実行時にはジェネリクスの型の情報はありませんよという
ジェネリクスの型のイレイジャを説明してるんだと思います
427デフォルトの名無しさん (ワッチョイ 2590-roBb)
垢版 |
2020/08/02(日) 13:54:11.18ID:5Ildc2NV0
https://docs.google.com/forms/d/e/1FAIpQLSebBwIO42wM8X7Jzv8STJvoEp4h_BjjcaMQBfY84ucao17qcQ/viewform?usp=sf_link
2020/08/02(日) 14:07:22.33ID:hOgQnHyE0
>>426
型の安全性とは、=の左右の型が一致しているということですか?
実行時には、型が安全であったかどうかという情報を破棄するというのは、どうしてそうするのですか?
なぜ、コンパイル時に行う処理と実行時に行う処理に分けるのですか?
429デフォルトの名無しさん (ワッチョイ ce01-Nz8z)
垢版 |
2020/08/02(日) 14:42:16.64ID:HWQVFDgv0
>>428
> 型の安全性とは、=の左右の型が一致しているということですか?

左右の一致もそうだけどジェネリクスの型が関わるところはすべて
Javaは静的型付き言語なので型は実行前に決まるからコンパイルが通ったら
型の不整合は存在しないってこと

> 実行時には、型が安全であったかどうかという情報を破棄するというのは、どうしてそうするのですか?

イレイジャ方式を採用してるから、なぜイレイジャ方式なのかは過去のものとの互換性のためらしい
詳しくはこのあたりを参照いただければ
贖罪のイレイジャ - プログラマーの脳みそ
https://nagise.hatenablog.jp/entry/20160520/1463744926

> なぜ、コンパイル時に行う処理と実行時に行う処理に分けるのですか?

イレイジャ方式を採用してるから実行時にキャストが必要になる
2020/08/02(日) 14:53:18.78ID:hOgQnHyE0
>>429
ありがとうございました。
431デフォルトの名無しさん (ワッチョイ a910-Hcnj)
垢版 |
2020/08/09(日) 01:04:45.45ID:yhrtA4So0
((num%31536000)/8)/86400を実行すると213になってしまうんだけど原因わかりますか?
26になるはずなんですが
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況