X



★★Java質問・相談スレッド183★★
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 7f9f-FhGp)
垢版 |
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
0431デフォルトの名無しさん (ワッチョイ a910-Hcnj)
垢版 |
2020/08/09(日) 01:04:45.45ID:yhrtA4So0
((num%31536000)/8)/86400を実行すると213になってしまうんだけど原因わかりますか?
26になるはずなんですが
0432デフォルトの名無しさん (ワッチョイ 1b01-h+bK)
垢版 |
2020/08/09(日) 01:14:13.88ID:HZ7sqguG0
>>431
numの値はいくつなん?
0433デフォルトの名無しさん (ワッチョイ a910-Hcnj)
垢版 |
2020/08/09(日) 08:11:57.22ID:yhrtA4So0
>>432
int num = 50000000
です
0439デフォルトの名無しさん (ワッチョイ a910-Hcnj)
垢版 |
2020/08/09(日) 18:18:51.83ID:yhrtA4So0
>>438
一応解決しました
0440デフォルトの名無しさん (ワッチョイ ff01-dFmy)
垢版 |
2020/08/25(火) 23:18:31.97ID:5sKkPFkq0
ジェネリクスの型引数はどうして一文字なんでしょうか?
省略せずにわかりやすく書くのが現代のプログラミングの基本だと思うのですが
いつまでJavaはわかりにくい書き方に固執するのですか?
0441デフォルトの名無しさん (ワッチョイ ff01-dFmy)
垢版 |
2020/08/25(火) 23:20:48.35ID:5sKkPFkq0
型引数はクラスと同格なので、名前が一文字のクラスがあったらぶちギレでしょう
なぜ、型引数では一文字が常識とされているのかまったくわかりません
0443デフォルトの名無しさん (ワッチョイ ff01-dFmy)
垢版 |
2020/08/25(火) 23:28:49.55ID:5sKkPFkq0
>>442
い、意味が、わかり、ません
0445デフォルトの名無しさん (ワッチョイ ff01-dFmy)
垢版 |
2020/08/25(火) 23:33:06.46ID:5sKkPFkq0
たとえばLinkedListクラスはこうなってます
LinkedList<E>

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

EだけだとErrorなのかEmptyなのがEggなのかわかりませんよね
僕はわかりましたけどみなさんはわかりませんよね
0446デフォルトの名無しさん (ワッチョイ ff01-dFmy)
垢版 |
2020/08/25(火) 23:34:00.11ID:5sKkPFkq0
>>444
Javaにはパッケージという仕組みがあるわけですから
クラス名がかぶっても問題ないです
0447デフォルトの名無しさん (ワッチョイ 9f9f-748B)
垢版 |
2020/08/25(火) 23:58:41.15ID:foaBkBNu0
確かに一文字ってのは妙な文化だな
強いて理由を探すならこんなところ?
・ユーザー定義の型が入るワイルドカード感をどことなく醸し出したかった
・イレイジャーの存在感の希薄さをほんのり匂わせたかった
0450デフォルトの名無しさん (ワッチョイ a23c-kl6l)
垢版 |
2020/08/26(水) 12:54:18.80ID:sUxjWWoe0
>>414
わしはKate+Konsoleじゃ。
0451デフォルトの名無しさん (ワッチョイ 8255-1etN)
垢版 |
2020/08/26(水) 17:25:21.99ID:jQHqTTLQ0
順列組合せ関連の質問です。

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

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

単に元の数が2の部分集合をすべてプリントせよという問題ならばできます。
0452デフォルトの名無しさん (ワッチョイ 8255-1etN)
垢版 |
2020/08/26(水) 17:37:36.24ID:jQHqTTLQ0
再帰が使えないようなのが難しい原因のように思います。
0454453 (ワッチョイ 452c-VQ5f)
垢版 |
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
0455デフォルトの名無しさん (ワッチョイ 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
0456デフォルトの名無しさん (ワッチョイ 119f-kQsB)
垢版 |
2020/08/26(水) 21:06:25.84ID:El1cFvrX0
最も初歩的なインデックスを使ったイテレーションが素朴に2つのインデックスになるだけでいいのでは
イテレーターに変数leftとrightを持たせて、初期値は1と2
rightだけインクリメントしていく
rightが末端まで到達したら先頭に戻してleftをインクリメント
rightとleftが同値ならとばす
とてもシンプル
0457デフォルトの名無しさん (ワッチョイ c612-pswI)
垢版 |
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);
¦ ¦ }
¦ }
0459デフォルトの名無しさん (ワッチョイ 82a5-oC+/)
垢版 |
2020/08/26(水) 21:41:16.73ID:70gZaOXI0
C++じゃ良く聞く話だけれどもJavaでは上手い説明サイトが無い
0460デフォルトの名無しさん (ワッチョイ 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個削除すればエラーにならないって感じ
0461デフォルトの名無しさん (ワッチョイ 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の先頭からまた繰り返したいのですが、どうすればいいでしょうか?
0465457 (ワッチョイ c612-mEBg)
垢版 |
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();
}
}
0466457 (ワッチョイ c612-mEBg)
垢版 |
2020/08/27(木) 06:58:27.19ID:9xGPySdg0
すみません間違えてました

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

これだと事象再現できて、>>460さんの説明を理解できた気がします
0468デフォルトの名無しさん (ワッチョイ 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/
0469デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/19(土) 18:32:05.85ID:sD0hdZTu0
質問
javaでプログラムを処理中にCtrl+Cでinterruptのシグナルを送って
プログラムを強制終了するときにシグナルが送られたことをプログラム側で
検知して処理を分岐させる方法を教えて下さい
0472デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/19(土) 21:31:20.67ID:sD0hdZTu0
>>471
マジですか・・・シグナル送られると例外も投げられないし
finallyの処理も行われずにプログラムが終了するんですよね
Java難しいです
0474デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/19(土) 21:33:48.92ID:sD0hdZTu0
JNAググってみたんですけどこれ凄そうです、これでやってみます
ありがとうございます!
0475デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/19(土) 21:34:08.31ID:sD0hdZTu0
>>473
ありがとうございます!試してみます!
0477デフォルトの名無しさん (ワッチョイ bf01-xr7l)
垢版 |
2020/09/19(土) 21:38:06.96ID:sD0hdZTu0
>>476
シンプルそうですね、ありがとうございます!
0482デフォルトの名無しさん (ワッチョイ 9fa5-GbXZ)
垢版 |
2020/09/21(月) 17:18:02.72ID:zhVYtERB0
C言語かC++で書かれたものの移植ではなかろうか
0489デフォルトの名無しさん (ワッチョイ ffad-EdVv)
垢版 |
2020/09/30(水) 03:50:51.93ID:vLo2/Ilx0
Kotlin もよろしく
0490デフォルトの名無しさん (ワッチョイ d32c-G8Sl)
垢版 |
2020/09/30(水) 11:27:11.40ID:/dbaz1tV0
未経験なら、Ruby 一択!

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

そして、ベンチャー企業は、Ruby on Rails ばかり採用する
0492デフォルトの名無しさん (ワッチョイ c3f1-buUt)
垢版 |
2020/09/30(水) 12:55:51.77ID:xxSg96Gs0
>>485
オレは30代のハゲです。いっしょにJavaやろうじゃないか。
0496デフォルトの名無しさん (ワッチョイ 9f40-ZhtZ)
垢版 |
2020/10/18(日) 16:27:46.35ID:/wBkmO6c0
数学の「型付きラムダ計算」とは?
javaのラムダは型付き?
v -> v.toString()
こんな風に書いたとき、引数vもtoString()の返値も型を持ってるけど、
そのことなんだろうか?
0498デフォルトの名無しさん (ワッチョイ 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/
0501デフォルトの名無しさん (ワッチョイ fb02-rsky)
垢版 |
2020/10/30(金) 08:40:24.61ID:5ayF+PMf0
Reflection とか Annotation とか使いだして整理しようとすると、
Generics で型情報が消去されるのがほんとうんkですね…
将来的にどうにかできんのですかね…
互換性っていうけど、どの部分の互換性が崩れるんだろ

List<String> list;

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

List<T>

みたいな宣言から、実行時にはじめて決定する型情報を引き出そうとすると無理になる
引数に Class<?> 渡せば良いんだけど、もにょる
stream の toArray とかも、配列 new せんとあかんのかいってなるよね…
0502デフォルトの名無しさん (ワッチョイ fb02-rsky)
垢版 |
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 側にそういう機能があれば可能になるんじゃなかろうか
デバッガ全部実装ってなると処理重いだろうけど、こういう局所的な機能だとどうなんだろ
無理なんかな
0503デフォルトの名無しさん (ブーイモ MMcb-Ezn+)
垢版 |
2020/10/30(金) 09:52:16.84ID:5giIBuWJM
genericsがなかったとき、Listの要素はすべてObjectだった。その頃との互換性。
今でもListをコンパイルするとObjectのリストになる。

実行時の型情報はgetClassで取得できると思うけど
0504デフォルトの名無しさん (ワッチョイ f99f-wWLy)
垢版 |
2020/10/30(金) 09:59:28.66ID:EBRgydAT0
型消去の利点はコンパイル結果のclassファイルの互換性を保ち仕様変更を抑えられるところ
Java5で書いたコードを1.4以前の環境でも動かせたりする
classを相手にしないといけないツールやミドルウェアへのインパクトが小さい
型消去で妥協したからこそJava5でgenericsを導入できたしダメならJavaはより早く衰退していた可能性もある
0505デフォルトの名無しさん (テテンテンテン MMeb-z5gY)
垢版 |
2020/10/30(金) 11:10:49.23ID:hrZSGYbOM
それはよくある迷信というか当時のSunの詭弁
そもそもジェネリクスを使うにはJava1.5以降のランタイムが必要なんで、Javaを利用する立場ではバイトコードの互換性には実質的に何の意味もないのよ
ジェネリクスが残念仕様になったのはひとえに当時のSunに金がくてJVMに手を出せなかったからで、事実Oracleになって金に余裕ができてからはJVMは拡張されまくってる
0506デフォルトの名無しさん (ワッチョイ 53f0-8n4k)
垢版 |
2020/10/30(金) 11:19:13.86ID:6jWcOHsG0
1.4以前のgenerics使ってない過去のコード資産を
1.5以降のgenerics環境でも使えるようにするのか、それとも綺麗サッパリ捨てるのかって話であって
1.4以前でもgenerics使ってるコードを動かせるようにするって話じゃないんよ……
0508デフォルトの名無しさん (ワッチョイ fb01-fr3W)
垢版 |
2020/10/30(金) 11:28:02.04ID:9RgBA+ge0
ドトネトーは型消去じゃなくない?
0509デフォルトの名無しさん (ワッチョイ fb01-fr3W)
垢版 |
2020/10/30(金) 11:32:55.20ID:9RgBA+ge0
ドトネトは後発だからなーJavaよりも先に作られてて
Generics導入前との互換性が完全に保証されてるなら
MSはSunよりも技術力があると認めてやってもいいけどちがうじゃんか
0510デフォルトの名無しさん (ワッチョイ 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
0511デフォルトの名無しさん (ブーイモ MMcb-Ezn+)
垢版 |
2020/10/30(金) 11:43:30.17ID:5giIBuWJM
c#が登場したのは2000年。リリース時点でgenericsを考慮してなかったら、むしろmicrosoftの技術力を疑うわ。
実際、microsoftがgenericsの前身の研究を始めたのは1999年だし
0513デフォルトの名無しさん (ワッチョイ fb02-rsky)
垢版 |
2020/10/30(金) 12:59:09.57ID:5ayF+PMf0
スーパー過疎スレだし、日記はブログに書けって言われるか、もしくは反応0かと思ったけど、
歴史的なうんぬんとかいろいろ書いてくれる人いてありがたい
ちゃんとウォッチしてる人もいるんだねここ
0514デフォルトの名無しさん (ワッチョイ fb02-rsky)
垢版 |
2020/10/30(金) 13:04:14.88ID:5ayF+PMf0
型消去って、JVM や class ファイルの仕様だから、
Kotlin とか Groovy とかの後発JVM言語とかでも型消去はされるんよね?

その辺のスクリプトってランタイムにいろいろいじくれる印象だけども
基本的にリフレクションのAPIをごちゃごちゃいじって出来ないことは、Kotlin Groovy でもできないってことなんかな
0518デフォルトの名無しさん (ワッチョイ fb02-rsky)
垢版 |
2020/10/31(土) 00:24:22.47ID:P3yvSdO+0
>>517
回答ありがとう

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

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

とある対象クラスの1つがジェネリクス使ってて、困ったなどうしようかなって感じです
0520デフォルトの名無しさん (ワッチョイ fb02-rsky)
垢版 |
2020/11/02(月) 14:20:31.77ID:xsbidkkO0
EnumSet の 3値版みたいなのってデフォでは用意されてないですよね?多分
true false ともう一個くらい欲しい

あるインスタンスに関して、include するか exlude するか ignore するかみたいなフラグ
そして、その3値のフラグがいっぱい欲しいとき
EnumSet は、1bit で 1 flag だけど、2bit で 1flag みたいなの(これだと4値まで扱えるけど)
0522デフォルトの名無しさん (ワッチョイ fb02-rsky)
垢版 |
2020/11/02(月) 14:51:03.37ID:xsbidkkO0
ありがとう
たしかに、boolean の代わりにつかのならいいかもしれませんね OptionalBoolean
だけど、bit flag 的な動作(=EnumSet のような仕様)のクラスは多分自作しないとない感じですよね
0524デフォルトの名無しさん (ワッチョイ fb01-fr3W)
垢版 |
2020/11/02(月) 16:29:57.67ID:LqVECFSh0
enumでいいじゃん
0525デフォルトの名無しさん (ワッチョイ fb01-fr3W)
垢版 |
2020/11/02(月) 16:30:24.97ID:LqVECFSh0
イナム
■ このスレッドは過去ログ倉庫に格納されています

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