★★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
432デフォルトの名無しさん (ワッチョイ 1b01-h+bK)
垢版 |
2020/08/09(日) 01:14:13.88ID:HZ7sqguG0
>>431
numの値はいくつなん?
433デフォルトの名無しさん (ワッチョイ a910-Hcnj)
垢版 |
2020/08/09(日) 08:11:57.22ID:yhrtA4So0
>>432
int num = 50000000
です
2020/08/09(日) 09:01:29.00ID:2MS+1Fma0
int
2020/08/09(日) 11:53:54.73ID:0YrfFsHe0
そもそも期待通りの値がnumにセットされてないと予想
436デフォルトの名無しさん (ワッチョイ 1b01-h+bK)
垢版 |
2020/08/09(日) 14:33:10.46ID:HZ7sqguG0
26になった
https://paiza.io/projects/guG3riR84R7AdO6vN10wRw
2020/08/09(日) 16:05:44.65ID:yOL8Hbuo0
intに意図通り設定できずorz
438デフォルトの名無しさん (ワッチョイ 13a5-w77N)
垢版 |
2020/08/09(日) 17:16:17.36ID:r8wfwf1H0
>>431
解決したか?

javaの計算についてpublic class UnixTime { private int utime;pri... - Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13229755313

java の計算についてpublic class A { private int u; private static int... - Yahoo!知恵袋
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11229753136
439デフォルトの名無しさん (ワッチョイ a910-Hcnj)
垢版 |
2020/08/09(日) 18:18:51.83ID:yhrtA4So0
>>438
一応解決しました
440デフォルトの名無しさん (ワッチョイ ff01-dFmy)
垢版 |
2020/08/25(火) 23:18:31.97ID:5sKkPFkq0
ジェネリクスの型引数はどうして一文字なんでしょうか?
省略せずにわかりやすく書くのが現代のプログラミングの基本だと思うのですが
いつまでJavaはわかりにくい書き方に固執するのですか?
441デフォルトの名無しさん (ワッチョイ ff01-dFmy)
垢版 |
2020/08/25(火) 23:20:48.35ID:5sKkPFkq0
型引数はクラスと同格なので、名前が一文字のクラスがあったらぶちギレでしょう
なぜ、型引数では一文字が常識とされているのかまったくわかりません
2020/08/25(火) 23:25:38.24ID:8Q4E/UJjM
char型が1文字だからじゃないの
443デフォルトの名無しさん (ワッチョイ ff01-dFmy)
垢版 |
2020/08/25(火) 23:28:49.55ID:5sKkPFkq0
>>442
い、意味が、わかり、ません
2020/08/25(火) 23:29:06.78ID:zUVX4/T30
他のクラス名と被らないから
445デフォルトの名無しさん (ワッチョイ ff01-dFmy)
垢版 |
2020/08/25(火) 23:33:06.46ID:5sKkPFkq0
たとえばLinkedListクラスはこうなってます
LinkedList<E>

どう考えてもこうすべきでしょう
LinkedList<Element>

EだけだとErrorなのかEmptyなのがEggなのかわかりませんよね
僕はわかりましたけどみなさんはわかりませんよね
446デフォルトの名無しさん (ワッチョイ ff01-dFmy)
垢版 |
2020/08/25(火) 23:34:00.11ID:5sKkPFkq0
>>444
Javaにはパッケージという仕組みがあるわけですから
クラス名がかぶっても問題ないです
2020/08/25(火) 23:58:41.15ID:foaBkBNu0
確かに一文字ってのは妙な文化だな
強いて理由を探すならこんなところ?
・ユーザー定義の型が入るワイルドカード感をどことなく醸し出したかった
・イレイジャーの存在感の希薄さをほんのり匂わせたかった
2020/08/26(水) 00:09:28.52ID:DcWpENc0M
C#ではTElementだね
普通の型名ではない感を十分に醸し出しつつも説明性を犠牲にしない優れたアイデアだと思う
2020/08/26(水) 04:24:04.60ID:B+00leH+0
>>445
Elementは既にあるし
被らないならそれに越したことはないよ
450デフォルトの名無しさん (ワッチョイ a23c-kl6l)
垢版 |
2020/08/26(水) 12:54:18.80ID:sUxjWWoe0
>>414
わしはKate+Konsoleじゃ。
451デフォルトの名無しさん (ワッチョイ 8255-1etN)
垢版 |
2020/08/26(水) 17:25:21.99ID:jQHqTTLQ0
順列組合せ関連の質問です。

例えば、{1, 2, 3, 4}の元の数が2の部分集合をすべてほしいとします。

Iteratorがループを回るたびに、そのような元の数が2の部分集合を返すようにしたいのですが、どのように実装すればいいか
分かりません。

単に元の数が2の部分集合をすべてプリントせよという問題ならばできます。
452デフォルトの名無しさん (ワッチョイ 8255-1etN)
垢版 |
2020/08/26(水) 17:37:36.24ID:jQHqTTLQ0
再帰が使えないようなのが難しい原因のように思います。
2020/08/26(水) 17:41:00.03ID:BpaQECb00
Ruby なら、この順番

a = [1, 2, 3]
a.permutation(2).to_a

#=> [ [1,2],[1,3],[2,1],[2,3],[3,1],[3,2] ]
2020/08/26(水) 17:45:55.94ID:BpaQECb00
stack だろ
>>453
では、

1 push
2 push 出力
2 pop
3 push 出力
3 pop
1 pop

2 push
1 push 出力
1 pop
3 push 出力
3 pop
2 pop
455デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/08/26(水) 21:02:49.85ID:3xqKZ5M90
>>451
再帰での書き方はわかるっしょ
まず書いてみるっしょ
https://paiza.io/projects/BB_QvDo2fNb3gOJuUSJmcw

スタックを使ってそれをループに置き換えるっしょ
スタックフレームのオブジェクトを作って値を保存すると良い
https://paiza.io/projects/g7vJtyJzqluM_Her1CxQYQ

あとはイテレータを適当にでっちあげれば完成
https://paiza.io/projects/fviG9H33Fj2X64mF5xZHdQ
2020/08/26(水) 21:06:25.84ID:El1cFvrX0
最も初歩的なインデックスを使ったイテレーションが素朴に2つのインデックスになるだけでいいのでは
イテレーターに変数leftとrightを持たせて、初期値は1と2
rightだけインクリメントしていく
rightが末端まで到達したら先頭に戻してleftをインクリメント
rightとleftが同値ならとばす
とてもシンプル
2020/08/26(水) 21:16:13.78ID:B8valtQ50
以下で "x" のところをA, B, C, Eのどれかにすると
java.util.ConcurrentModificationException
が発生するのに、Dにしたときだけ発生しないのはなぜですか?

¦ ArrayList<String> list = new ArrayList<>();
¦ list.add("A");
¦ list.add("B");
¦ list.add("C");
¦ list.add("D");
¦ list.add("E");

¦ for (String str : list) {
¦ ¦ if ("X".equals(str)) {
¦ ¦ ¦ list.remove(str);
¦ ¦ }
¦ }
2020/08/26(水) 21:35:33.62ID:SAEXbqesM
ホントだ。何ぞこれ
459デフォルトの名無しさん (ワッチョイ 82a5-oC+/)
垢版 |
2020/08/26(水) 21:41:16.73ID:70gZaOXI0
C++じゃ良く聞く話だけれどもJavaでは上手い説明サイトが無い
460デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/08/26(水) 21:52:05.32ID:3xqKZ5M90
>>457
コンパイルするとこうなるっしょ

Iterator<String> it = list.iterator();

while (it.hasNext()) {
  String str = it.next();

  if ("X".equals(str)) {
    list.remove(str);
  }
}

next()の処理で変更されたかがチェックされている
hasNextはこうなっている

public boolean hasNext() {
  return cursor != size;
}

"D"のときに値を1個削除するとcursor == sizeとなってnextが呼ばれずに処理が終了する
なので、"C"のときには値を2個削除すればエラーにならないって感じ
461デフォルトの名無しさん (ワッチョイ 8255-1etN)
垢版 |
2020/08/27(木) 06:33:50.16ID:bgNZHReb0
AとBがIterableインターフェイスを実装したクラスのインスタンスであり、
A = {1,2,3}
B = {4,5,6}
みたいになっているとします。

for (int i : A) {
for (int j : B) {
System.out.println(i + ", " + j);
}
}

を実行すると、
1, 4
1, 5
1, 6
で終わってしまいます。

Bの先頭からまた繰り返したいのですが、どうすればいいでしょうか?
2020/08/27(木) 06:34:59.81ID:bgNZHReb0
昨日質問した組合せのIteratorは解決しました。ありがとうございました。
2020/08/27(木) 06:38:27.97ID:YgLmJLaS0
A側の実装がぶっ壊れてるからだろ
2020/08/27(木) 06:39:11.36ID:bgNZHReb0
あ、リセットするような機能をつければいいみたいですね。
2020/08/27(木) 06:48:12.41ID:9xGPySdg0
>>460
ありがとうございます
すみません、理解できなかったです

ご提示いただいたように Iterator を使って以下のように書いてみたら
A〜Eどれも例外発生しなかったです

ArrayList<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");

Iterator<String> ite = list.iterator();
while (ite.hasNext()) {
String str = ite.next();
if ("C".equals(str)) {
ite.remove();
}
}
2020/08/27(木) 06:58:27.19ID:9xGPySdg0
すみません間違えてました

誤 ite.remove();
正 list.remove(str);
ですね

これだと事象再現できて、>>460さんの説明を理解できた気がします
467デフォルトの名無しさん (ワッチョイ 8601-4Kjr)
垢版 |
2020/08/27(木) 16:58:37.90ID:JwVMaeMo0
>>461
https://paiza.io/projects/YaJc9_PREUaysdoeRc0SAg
468デフォルトの名無しさん (ワッチョイ 4d01-yRqa)
垢版 |
2020/08/31(月) 01:59:35.00ID:Sr2UUXBk0
新型コロナで1割が副業を開始、内容は「フリマアプリ」「投資」「クラウドソーシング」
https://news.yahoo.co.jp/articles/f603d4530fc3604c7bbfb855cfc2b03f6fef96d3
2月以降に副業を始めた人の3割が本業では「管理職」、コンサルタント、マーケターなどが専門スキルを活用
https://moneyzine.jp/article/detail/217351
3000人が回答!「副業・ダブルワーク」実態調査2人に1人が「副業・ダブルワーク」の経験ありと回答。
https://www.excite.co.jp/news/article/Atpress_223689/
20代の7割が「副業したい」、興味のある仕事は?
https://news.mynavi.jp/article/20200828-1253819/
副業の長時間労働防ぐ 新ガイドライン9月導入へ
https://www3.nhk.or.jp/news/html/20200827/k10012586471000.html
「毎日チョコ」生活4年 ブログで発信、趣味が副業に
https://style.nikkei.com/article/DGXMZO6285259020082020000000
「会社設立freee」に無料のiOSアプリ登場--スマホのみで会社設立が可能に
https://news.yahoo.co.jp/articles/013b58ddc7af139b65fbe5dc09a31a16ebcea0d6
月100万円の収入で本業超えも!サラリーマンYouTuberの“リアル”とは
https://diamond.jp/articles/-/245711
7歳児が年俸25億円!「ユーチューバー」収益の仕組みを全解剖
https://diamond.jp/articles/-/194240
「おじさん」こそユーチューバーになるべき理由、動画配信で稼ぐ極意
https://diamond.jp/articles/-/243481
おじさんユーチューバーが活躍めざましい意外な理由
https://diamond.jp/articles/-/194065
月100万円以上も! 会社員の副業収入、平均額は?
https://news.mynavi.jp/article/20200806-1201517/
469デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/19(土) 18:32:05.85ID:sD0hdZTu0
質問
javaでプログラムを処理中にCtrl+Cでinterruptのシグナルを送って
プログラムを強制終了するときにシグナルが送られたことをプログラム側で
検知して処理を分岐させる方法を教えて下さい
2020/09/19(土) 20:13:59.99ID:Iurz6o440
回答
GGRKS
2020/09/19(土) 21:21:11.25ID:6nIfy15+0
>>469
Javaでは出来ないからJNIかJNA使ってね
472デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/19(土) 21:31:20.67ID:sD0hdZTu0
>>471
マジですか・・・シグナル送られると例外も投げられないし
finallyの処理も行われずにプログラムが終了するんですよね
Java難しいです
2020/09/19(土) 21:32:15.48ID:3baSQ5Yc0
>>469
非標準でいいなら sun.misc.SignalHandler かな。最近のバージョンで使えるかどうかは知らん。
474デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/19(土) 21:33:48.92ID:sD0hdZTu0
JNAググってみたんですけどこれ凄そうです、これでやってみます
ありがとうございます!
475デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/19(土) 21:34:08.31ID:sD0hdZTu0
>>473
ありがとうございます!試してみます!
2020/09/19(土) 21:34:35.11ID:3baSQ5Yc0
シグナルの種類どうでも良いなら java.lang.Runtime#addShutdownHook(Thread) でいいんだけど
477デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/19(土) 21:38:06.96ID:sD0hdZTu0
>>476
シンプルそうですね、ありがとうございます!
2020/09/19(土) 23:40:38.27ID:61l8trcl0
Ruby では、Signal.trap( :INT )

Java には、これぐらい無いのか?
2020/09/20(日) 05:53:18.33ID:9OEnzakW0
このオワコンRuby啓蒙家は何なんだろうな
おとなしく廃れてろアホ
2020/09/20(日) 10:22:52.05ID:L3kHEmVh0
>>471
それJavaw
2020/09/21(月) 15:29:44.55ID:QwCY82eQ0
シグナルハンドラーでなにすんだろ?
482デフォルトの名無しさん (ワッチョイ 9fa5-GbXZ)
垢版 |
2020/09/21(月) 17:18:02.72ID:zhVYtERB0
C言語かC++で書かれたものの移植ではなかろうか
2020/09/21(月) 20:08:32.62ID:QwCY82eQ0
エスパーの回答1
2020/09/26(土) 03:24:32.71ID:20ePzx790
だってほら、いきなり終わりになったらまずいプログラムもあるだろう。
2020/09/28(月) 01:25:45.98ID:2pFBqKlx0
プログラム未経験51歳だけどjava始めました
2020/09/28(月) 01:39:15.68ID:vbuHAbOK0
がんばれ!
2020/09/28(月) 14:41:49.57ID:2HUOIicb0
いつでもどこでいくつなってもJava
2020/09/29(火) 04:11:32.17ID:XGsJmR6iH
>>485
教えてあげるよ! LINE 教えて!
489デフォルトの名無しさん (ワッチョイ ffad-EdVv)
垢版 |
2020/09/30(水) 03:50:51.93ID:vLo2/Ilx0
Kotlin もよろしく
2020/09/30(水) 11:27:11.40ID:/dbaz1tV0
未経験なら、Ruby 一択!

他の言語は、挫折確率が非常に高い。
だから、全ての学校は、Rubyばかり教える

そして、ベンチャー企業は、Ruby on Rails ばかり採用する
2020/09/30(水) 12:15:11.36ID:NNWpaWfqa
>>485
自分も40過ぎです、いっしょにJavaやりませう
492デフォルトの名無しさん (ワッチョイ c3f1-buUt)
垢版 |
2020/09/30(水) 12:55:51.77ID:xxSg96Gs0
>>485
オレは30代のハゲです。いっしょにJavaやろうじゃないか。
2020/09/30(水) 14:47:17.30ID:wi0xobvb0
>>490
頭はげるぞ
2020/09/30(水) 15:15:57.62ID:/J4p2JyLM
>>490
お前新潟で降機させられて逮捕連行されてたんじゃないの?
2020/09/30(水) 15:47:07.60ID:nu6JtwLBM
>>490
どこの学校もPythonだぞ
496デフォルトの名無しさん (ワッチョイ 9f40-ZhtZ)
垢版 |
2020/10/18(日) 16:27:46.35ID:/wBkmO6c0
数学の「型付きラムダ計算」とは?
javaのラムダは型付き?
v -> v.toString()
こんな風に書いたとき、引数vもtoString()の返値も型を持ってるけど、
そのことなんだろうか?
2020/10/18(日) 17:00:24.67ID:0AL6/NwJ0
つぶやきはtwitterにでも書いておけ
498デフォルトの名無しさん (ワッチョイ fb01-ntOo)
垢版 |
2020/10/18(日) 21:03:23.09ID:oU6L/1KQ0
世界最強のユーチューバー、2019年の年収は約76億円 ゲーム実況でブレイク
https://www.wwdjapan.com/articles/994609
7歳児が年俸25億円!「ユーチューバー」収益の仕組みを全解剖
https://diamond.jp/articles/-/194240
月収8億超えのYouTuberは6歳の女の子!世界各国で最も人気のYouTuberをマップにしてみた
https://news.yahoo.co.jp/articles/ec9f6e431ac8bdcfdfe02e21220888e59583f475
個人としては史上初のチャンネル登録者数1億人超えYouTuberが誕生
https://gigazine.net/news/20190827-pewdiepie-youtube-100-million-subscribers/
20歳のYouTubeスターが購入、約8億円の豪邸を拝見
https://www.businessinsider.jp/post-107308
『2ヵ月で20億円』集めろ!有名ユーチューバーたちの「地球規模」の活動に寄付殺到
https://www.excite.co.jp/news/article/Frontrow_79b68120b00f0fdcefb17b65e2a6b0d70dceee3d/
24歳ユーチューバーはどうして大学卒業後に就職せず、フルタイムのインフルエンサーになったのか
https://www.businessinsider.jp/post-203042#cxrecs_s
食事をするだけで30万? 料理を作るだけで10万? アイデアで何気ない日常を副業にするユーチューバーの世界
https://www.sanspo.com/geino/news/20200131/prl20013110020028-n1.html
世界のYoutuber年収ランキング10選!超弩級に稼ぎまくり!
https://cambridge-india.org/sekai-youtuber-nensyu/
2020/10/29(木) 13:28:54.77ID:5PDD4zWJ0
JavaDoc に tl;dr 項目入れてくれ

正確で詳細な仕様が必要な場面より、
パット見で理解できる要約文や具体例が必要な場面のほうが多い
2020/10/29(木) 15:51:38.63ID:2rpDqgej0
それはいいね
最近はIDEでJavadocポップアップするのが当たり前になってるから
要約ブロックがあればJavadocポップアップにも適していると思う
2020/10/30(金) 08:40:24.61ID:5ayF+PMf0
Reflection とか Annotation とか使いだして整理しようとすると、
Generics で型情報が消去されるのがほんとうんkですね…
将来的にどうにかできんのですかね…
互換性っていうけど、どの部分の互換性が崩れるんだろ

List<String> list;

みたいな宣言から、String は取り出せるんだけど

List<T>

みたいな宣言から、実行時にはじめて決定する型情報を引き出そうとすると無理になる
引数に Class<?> 渡せば良いんだけど、もにょる
stream の toArray とかも、配列 new せんとあかんのかいってなるよね…
2020/10/30(金) 09:01:16.26ID:5ayF+PMf0
でも原理的に取り出すのが無理ってわけではないよね
class ファイルにも型情報ないし、その総称型のコードの実行部分でも、そのオブジェクトの指すポインタからは(List の中身がつまってなければ)型はわからないけど
コンストラクタなり、メソッドの呼び出し側は実際の型を知ってるよね多分

callGenericMethod(List<T> arg);

ってメソッドがあったとして、呼び出し側クラスのフィールドに、

List<String> list

って宣言があればスタックを戻っていけば型情報とれるけど、例えば、

void hoge() {
callGenericMethod(new ArrayList<String>());
}

みたいなメソッド内の呼び出しでも、Stack 探せば型情報ってあるよね
Reflection でローカル変数の情報引き出せないとすると、デバッガ関連のAPI で、コード領域のメモリ検索してみたいなことしないといかんのか
JVM 側にそういう機能があれば可能になるんじゃなかろうか
デバッガ全部実装ってなると処理重いだろうけど、こういう局所的な機能だとどうなんだろ
無理なんかな
2020/10/30(金) 09:52:16.84ID:5giIBuWJM
genericsがなかったとき、Listの要素はすべてObjectだった。その頃との互換性。
今でもListをコンパイルするとObjectのリストになる。

実行時の型情報はgetClassで取得できると思うけど
2020/10/30(金) 09:59:28.66ID:EBRgydAT0
型消去の利点はコンパイル結果のclassファイルの互換性を保ち仕様変更を抑えられるところ
Java5で書いたコードを1.4以前の環境でも動かせたりする
classを相手にしないといけないツールやミドルウェアへのインパクトが小さい
型消去で妥協したからこそJava5でgenericsを導入できたしダメならJavaはより早く衰退していた可能性もある
2020/10/30(金) 11:10:49.23ID:hrZSGYbOM
それはよくある迷信というか当時のSunの詭弁
そもそもジェネリクスを使うにはJava1.5以降のランタイムが必要なんで、Javaを利用する立場ではバイトコードの互換性には実質的に何の意味もないのよ
ジェネリクスが残念仕様になったのはひとえに当時のSunに金がくてJVMに手を出せなかったからで、事実Oracleになって金に余裕ができてからはJVMは拡張されまくってる
2020/10/30(金) 11:19:13.86ID:6jWcOHsG0
1.4以前のgenerics使ってない過去のコード資産を
1.5以降のgenerics環境でも使えるようにするのか、それとも綺麗サッパリ捨てるのかって話であって
1.4以前でもgenerics使ってるコードを動かせるようにするって話じゃないんよ……
2020/10/30(金) 11:21:27.39ID:hrZSGYbOM
そっちの互換性は.NETでは普通に実現できてたから、それが理由ならSunに技術力がないということになるよ
508デフォルトの名無しさん (ワッチョイ fb01-fr3W)
垢版 |
2020/10/30(金) 11:28:02.04ID:9RgBA+ge0
ドトネトーは型消去じゃなくない?
509デフォルトの名無しさん (ワッチョイ fb01-fr3W)
垢版 |
2020/10/30(金) 11:32:55.20ID:9RgBA+ge0
ドトネトは後発だからなーJavaよりも先に作られてて
Generics導入前との互換性が完全に保証されてるなら
MSはSunよりも技術力があると認めてやってもいいけどちがうじゃんか
510デフォルトの名無しさん (ワッチョイ fb01-fr3W)
垢版 |
2020/10/30(金) 11:43:29.96ID:9RgBA+ge0
ドトネトは互換性を切り捨てて言語の進化を優先した
言語が作られたばかりで利用者が少なく既存プログラムが少なかったからできたことだよ

.NET Framework 4.5と下位バージョンの互換性がカオス
https://freesoft.tvbok.com/tips/os/net_framework_45.html
2020/10/30(金) 11:43:30.17ID:5giIBuWJM
c#が登場したのは2000年。リリース時点でgenericsを考慮してなかったら、むしろmicrosoftの技術力を疑うわ。
実際、microsoftがgenericsの前身の研究を始めたのは1999年だし
2020/10/30(金) 11:49:04.45ID:6jWcOHsG0
そいやJVMの拡張って具体的には何の事言ってんの?
バイトコードレベルっつーか命令セットレベルではinvokedynamicぐらいしか変更なかったと思うけど……
2020/10/30(金) 12:59:09.57ID:5ayF+PMf0
スーパー過疎スレだし、日記はブログに書けって言われるか、もしくは反応0かと思ったけど、
歴史的なうんぬんとかいろいろ書いてくれる人いてありがたい
ちゃんとウォッチしてる人もいるんだねここ
2020/10/30(金) 13:04:14.88ID:5ayF+PMf0
型消去って、JVM や class ファイルの仕様だから、
Kotlin とか Groovy とかの後発JVM言語とかでも型消去はされるんよね?

その辺のスクリプトってランタイムにいろいろいじくれる印象だけども
基本的にリフレクションのAPIをごちゃごちゃいじって出来ないことは、Kotlin Groovy でもできないってことなんかな
2020/10/30(金) 13:20:07.36ID:6vdzB2yYM
>>514
型消去はあくまでJava言語の仕様
2020/10/30(金) 16:23:21.36ID:cq+PI2bI0
>>513
ちらしの裏にでも書いておけ
2020/10/31(土) 00:09:05.40ID:gxLrKFoA0
>514
kotlinやgroovyも実行時にgenericsの型消去されるのはその通り。
>>515は嘘松

リフレクションで何をしようとしたの?
2020/10/31(土) 00:24:22.47ID:P3yvSdO+0
>>517
回答ありがとう

lombok の @Builder @Singular がカスタマイズ性低くて不満だったから、
Builder パターンのソースコードを自分で自動生成できないかなと思ったんだよね

ASD とか使ってやるのが正統派なんだろうけど、使い方覚えるのとか時間かかりそうだし、
そのままデフォで用意されてるリフレクション使ってパッと作れないかなと

とある対象クラスの1つがジェネリクス使ってて、困ったなどうしようかなって感じです
2020/11/01(日) 10:20:30.19ID:XNBfCucM0
Producer extends Consumer super ってのは頭にあるけど、
これいつもこんがらがる
2020/11/02(月) 14:20:31.77ID:xsbidkkO0
EnumSet の 3値版みたいなのってデフォでは用意されてないですよね?多分
true false ともう一個くらい欲しい

あるインスタンスに関して、include するか exlude するか ignore するかみたいなフラグ
そして、その3値のフラグがいっぱい欲しいとき
EnumSet は、1bit で 1 flag だけど、2bit で 1flag みたいなの(これだと4値まで扱えるけど)
2020/11/02(月) 14:40:30.21ID:WBPd1VYFM
OptionalBooleanとか?
2020/11/02(月) 14:51:03.37ID:xsbidkkO0
ありがとう
たしかに、boolean の代わりにつかのならいいかもしれませんね OptionalBoolean
だけど、bit flag 的な動作(=EnumSet のような仕様)のクラスは多分自作しないとない感じですよね
2020/11/02(月) 16:05:39.50ID:4GAxhcsF0
だってあなた true と false ともう1つって言ったじゃない
524デフォルトの名無しさん (ワッチョイ fb01-fr3W)
垢版 |
2020/11/02(月) 16:29:57.67ID:LqVECFSh0
enumでいいじゃん
525デフォルトの名無しさん (ワッチョイ fb01-fr3W)
垢版 |
2020/11/02(月) 16:30:24.97ID:LqVECFSh0
イナム
2020/11/02(月) 16:45:21.07ID:xsbidkkO0
boolean の 3値版 は OptionalBoolean、3値以上ほしければ、enum だけど
EnumSet の 3値版
2020/11/02(月) 16:45:23.03ID:xsbidkkO0
boolean の 3値版 は OptionalBoolean、3値以上ほしければ、enum だけど
EnumSet の 3値版
2020/11/02(月) 17:07:10.68ID:xsbidkkO0
よくよく考えたら HashMap のラッパみたいなので事足りそうかも
すまそ
2020/11/02(月) 17:10:46.96ID:xsbidkkO0
でもよくよく考えたら、機能的にはそれでいいけど、内部的に bit flag 的な動作になってないから
もともとの目的達成してないわ…すまそ
2020/11/02(月) 17:32:32.99ID:O692h/lZ0
細かいけどOptionalBooleanというクラスはありそうで存在しない
Optional<Boolean>になる

Optionalをメンバとして使うのはSerializabeあたりの理由で微妙だしIGNOREという具体的な値をemptyで代用するのもまた宜しくない
素直にタイプセーフenumを使って恩恵を得るのが可読性と汎用性と、実用面で十分な効率を満足すると思う

あとこの三値のお題でEnumSetに言及しているのは謎
Setではフラグをいっぱい持つことはできないぞ
高効率なListのような仕様を期待しているのだろうか
2020/11/02(月) 17:39:42.45ID:O692h/lZ0
いやEnumSet的なもののインスタンスをたくさん持ちたいから高効率が希望ということか
なら普通にEnumSetでいいと思う
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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