探検
★★Java質問・相談スレッド182★★
■ このスレッドは過去ログ倉庫に格納されています
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
758753 (ワッチョイ 7d46-CCy/ [58.88.17.246])
2020/01/09(木) 18:03:22.21ID:r2AVr9JT0 皆さん返答ありがとうございました、参考になります
JavaではGUIアプリを作るのは取り敢えず辞めにして、コンソールで適当なゲームでも作って覚えることにします
JavaではGUIアプリを作るのは取り敢えず辞めにして、コンソールで適当なゲームでも作って覚えることにします
759デフォルトの名無しさん (ワッチョイ a301-ErPi [221.33.176.17])
2020/01/10(金) 12:19:03.17ID:MA7SUINg0 javaのソースコードの見方がわからない
androidアプリをとりあえず逆コンパイルして.classを抽出して中身のコードを見ることはできるようになったんだけど
沢山.classのファイルがあってどこが何がスタートになってるの?
順番ってどうなってるの?
そのアプリはa.class b.class c.classってタイトルが全部アルファベットなんだけど
androidアプリをとりあえず逆コンパイルして.classを抽出して中身のコードを見ることはできるようになったんだけど
沢山.classのファイルがあってどこが何がスタートになってるの?
順番ってどうなってるの?
そのアプリはa.class b.class c.classってタイトルが全部アルファベットなんだけど
760デフォルトの名無しさん (ワッチョイ 2390-mHUb [59.85.250.241])
2020/01/10(金) 13:53:24.38ID:kNTR9GPN0 aとかbとかは君のように解析しようとする試みを防ぐため難読化されてるってこと。
エントリポイントはActivityを継承したクラス見っけて...かな?
エントリポイントはActivityを継承したクラス見っけて...かな?
761デフォルトの名無しさん (スップ Sd03-B9Rj [1.72.8.135])
2020/01/10(金) 14:29:37.98ID:zQO7dZXUd zxingでQRコードとJANコードが入った画像を読み取りたいんだけど
JANコードだけを読み取りたい。みたいな事ってできない?
JANコードだけを読み取りたい。みたいな事ってできない?
762デフォルトの名無しさん (ワッチョイ a301-tgR8 [221.33.176.3])
2020/01/10(金) 15:04:57.68ID:+8yrOvaU0 >>760
メソッド名は“main”である(すべて小文字)
どっかにmainってファイルが必ずあるはずで、これがこのアプリの入口になってて他のclassのファイルは小部屋みたいなもんなんでしょ?
mainってファイルがどこ探してもないんだけどこれどういうことなん?
メソッド名は“main”である(すべて小文字)
どっかにmainってファイルが必ずあるはずで、これがこのアプリの入口になってて他のclassのファイルは小部屋みたいなもんなんでしょ?
mainってファイルがどこ探してもないんだけどこれどういうことなん?
763デフォルトの名無しさん (オッペケ Srf1-tc1A [126.234.11.188])
2020/01/10(金) 15:08:39.67ID:9j5+BVSIr メソッドって自分で言ってんのにファイル名探すとは
764デフォルトの名無しさん (ワッチョイ 6501-eaUz [126.168.224.177])
2020/01/10(金) 18:11:08.65ID:D+gtbuRW0 C#erに、まだフィールド使って接頭語にアンダースコア付けてるんでしょ?と言われて何か悔しいです。
ギャフンと言わせる方法はあるでしょうか?
ギャフンと言わせる方法はあるでしょうか?
765デフォルトの名無しさん (ワッチョイ 9d7f-G18V [128.28.60.74])
2020/01/10(金) 18:13:03.87ID:ujZrkvpm0 音楽プレーヤーをカスタマイズしたいのですが教えてください
https://imgur.com/a/jQqzGGM
今アルバムタイトルの下に情報が並んでいます
この最後に任意のFieldに書き込んだ文字を表示させることは出来ますでしょうか?
スクリプトファイルを開くと
//---> INFO
if (showGroupInfo) {
var infoX = leftPad;
var infoY = groupY + artistH + albumH;
var infoH = h;
var infoW = w - x - infoX;
var bitspersample = $("$Info(bitspersample)", metadb);
var samplerate = $("$Info(samplerate)", metadb);
var sample = ((bitspersample > 16 || samplerate > 44100) ? " " + bitspersample + "bit/" + samplerate / 1000 + "kHz" : "");
var codec = $("$ext(%path%)", metadb) ;
https://imgur.com/a/jQqzGGM
今アルバムタイトルの下に情報が並んでいます
この最後に任意のFieldに書き込んだ文字を表示させることは出来ますでしょうか?
スクリプトファイルを開くと
//---> INFO
if (showGroupInfo) {
var infoX = leftPad;
var infoY = groupY + artistH + albumH;
var infoH = h;
var infoW = w - x - infoX;
var bitspersample = $("$Info(bitspersample)", metadb);
var samplerate = $("$Info(samplerate)", metadb);
var sample = ((bitspersample > 16 || samplerate > 44100) ? " " + bitspersample + "bit/" + samplerate / 1000 + "kHz" : "");
var codec = $("$ext(%path%)", metadb) ;
766デフォルトの名無しさん (ワッチョイ 9d7f-G18V [128.28.60.74])
2020/01/10(金) 18:13:27.27ID:ujZrkvpm0 if (codec == "cue"){
codec = $("$ext($Info(referenced_file))", metadb);
} else if (codec == "mpc") {
codec = codec + " " + $("$Info(codec_profile)", metadb).replace("quality ", "q");
}
else if ($("$Info(encoding)", metadb) == "lossy") {
if ($("$Info(codec_profile)", metadb) == "CBR") codec = codec + " " + $("%bitrate%", metadb) + "kbps";
else codec = codec + " " + $("$Info(codec_profile)", metadb);
}
if (codec) {
codec = codec + sample;
} else {
codec = path;
codec = $("$ext($Info(referenced_file))", metadb);
} else if (codec == "mpc") {
codec = codec + " " + $("$Info(codec_profile)", metadb).replace("quality ", "q");
}
else if ($("$Info(encoding)", metadb) == "lossy") {
if ($("$Info(codec_profile)", metadb) == "CBR") codec = codec + " " + $("%bitrate%", metadb) + "kbps";
else codec = codec + " " + $("$Info(codec_profile)", metadb);
}
if (codec) {
codec = codec + sample;
} else {
codec = path;
767デフォルトの名無しさん (ワッチョイ 9d7f-G18V [128.28.60.74])
2020/01/10(金) 18:15:06.30ID:ujZrkvpm0 }
var iCount = itemCount[ID.groupNr];
var genre = radio ? "" : (groupedID ? "%genre% | " : "");
var discNumber = (groupedID != 2 ? "" : $("[ | Disc: %discnumber%/%totaldiscs%]", metadb));
var info = $(genre + codec + discNumber + "[ | %replaygain_album_gain%]", metadb)
+ (radio ? "" : " | " + iCount + (iCount == 1 ? " Track" : " Tracks")
+ " | Time: " + calculateGroupLength(firstItem[groupNr], lastItem[groupNr]));
var w = w - x - 10;
g.DrawString(info, infoFont, infoColor, infoX, infoY, infoW, infoH, StringFormat(0, 0, 3, 0x1000));
var infoStringH = Math.ceil(gr.MeasureString(info, infoFont, 0, 0, 0, 0).Height + 5);
var lineX1 = infoX,
lineX2 = 20 + w,
lineY = infoY + infoStringH;
(lineX2 - lineX1 > 0) && g.DrawLine(lineX1, lineY, lineX2, lineY, 1, lineColor);
}
となっていました
これはJavaでしょうか?
上記URLに任意のFieldを追加するにはどうすればよいでしょうか?
よろしくお願いいたします
var iCount = itemCount[ID.groupNr];
var genre = radio ? "" : (groupedID ? "%genre% | " : "");
var discNumber = (groupedID != 2 ? "" : $("[ | Disc: %discnumber%/%totaldiscs%]", metadb));
var info = $(genre + codec + discNumber + "[ | %replaygain_album_gain%]", metadb)
+ (radio ? "" : " | " + iCount + (iCount == 1 ? " Track" : " Tracks")
+ " | Time: " + calculateGroupLength(firstItem[groupNr], lastItem[groupNr]));
var w = w - x - 10;
g.DrawString(info, infoFont, infoColor, infoX, infoY, infoW, infoH, StringFormat(0, 0, 3, 0x1000));
var infoStringH = Math.ceil(gr.MeasureString(info, infoFont, 0, 0, 0, 0).Height + 5);
var lineX1 = infoX,
lineX2 = 20 + w,
lineY = infoY + infoStringH;
(lineX2 - lineX1 > 0) && g.DrawLine(lineX1, lineY, lineX2, lineY, 1, lineColor);
}
となっていました
これはJavaでしょうか?
上記URLに任意のFieldを追加するにはどうすればよいでしょうか?
よろしくお願いいたします
768デフォルトの名無しさん (ドコグロ MM13-JyDu [119.240.141.99])
2020/01/10(金) 18:50:23.24ID:915LIh+yM >>764
言語面ではJavaはあらゆる面でC#に劣るから、正攻法で戦ってはいけない
C#er相手にマウントを取るには、でもWindowsなんでしょ?wwwが一番効く
お前もWindowsでJavaを運用していたり、そのC#erが.NET CoreをLinuxで運用してたりUnity開発者だったりするなら諦めろ
言語面ではJavaはあらゆる面でC#に劣るから、正攻法で戦ってはいけない
C#er相手にマウントを取るには、でもWindowsなんでしょ?wwwが一番効く
お前もWindowsでJavaを運用していたり、そのC#erが.NET CoreをLinuxで運用してたりUnity開発者だったりするなら諦めろ
769デフォルトの名無しさん (ワッチョイ 5b01-zcZG [111.90.14.57])
2020/01/10(金) 22:38:24.06ID:ALcwyMXE0 >>765
foobar2000のJavaScriptっぽいなー
foobar2000のJavaScriptっぽいなー
770デフォルトの名無しさん (ワッチョイ 23ad-UU8b [27.139.41.170])
2020/01/10(金) 23:24:28.51ID:u5Uqllm50 >>761
EANReaderってQR反応したっけ?
EANReaderってQR反応したっけ?
771デフォルトの名無しさん (ワッチョイ b59f-pLzZ [118.109.43.71])
2020/01/11(土) 02:43:04.54ID:14sFduQs0 >>764
・ゴメン俺Haskellに乗り換えたからJavaやってねーんだわ
・ゴメン俺マネジメントが忙しくて最近プログラミングさせてもらえねーわ
好きなほうどーぞ
Haskellは嘘だろと追及されそうならKotlinかLombokで
・ゴメン俺Haskellに乗り換えたからJavaやってねーんだわ
・ゴメン俺マネジメントが忙しくて最近プログラミングさせてもらえねーわ
好きなほうどーぞ
Haskellは嘘だろと追及されそうならKotlinかLombokで
772デフォルトの名無しさん (ワッチョイ a301-tgR8 [221.33.176.3])
2020/01/11(土) 08:57:49.30ID:qa2D3VNz0 >>763
>メソッド名は“main”である(すべて小文字)
これネットでggって書いてあったんだけど
じゃあファイル名はもう何かわからないってこと?mainメソッドの拡張子も.class?
この沢山ある**.classファイルの数々からmainを自分で見つけるしかないってこと?
>メソッド名は“main”である(すべて小文字)
これネットでggって書いてあったんだけど
じゃあファイル名はもう何かわからないってこと?mainメソッドの拡張子も.class?
この沢山ある**.classファイルの数々からmainを自分で見つけるしかないってこと?
773デフォルトの名無しさん (ワッチョイ 2361-alJZ [61.245.59.106])
2020/01/11(土) 09:07:22.58ID:+T4LytQN0 AndroidはJVMじゃないし。
774デフォルトの名無しさん (ワッチョイ 8b0d-0qp1 [121.2.61.211])
2020/01/11(土) 10:10:11.51ID:vwcaMfZA0 テキスト検索すらできない実力でリバースエンジニアリングできると思ってるの?
煽りじゃないよ
煽りじゃないよ
775デフォルトの名無しさん (ワッチョイ a301-tgR8 [221.33.176.3])
2020/01/11(土) 11:18:07.93ID:qa2D3VNz0 うん思ってる
776デフォルトの名無しさん (ワッチョイ a301-tgR8 [221.33.176.3])
2020/01/11(土) 11:42:50.55ID:qa2D3VNz0 指定した全部のファイルから
メソッドだろうが修飾子だろうが全部の文字列検索してるツールとかってないの?
javaDecompiler使ってるんだけど、なぜか修飾子検索してくんないから全く使い物にならない
メソッドだろうが修飾子だろうが全部の文字列検索してるツールとかってないの?
javaDecompiler使ってるんだけど、なぜか修飾子検索してくんないから全く使い物にならない
777デフォルトの名無しさん (ワッチョイ a5e9-G18V [222.15.235.177])
2020/01/11(土) 11:52:19.94ID:as9AOr230 普段プログラム書くのに使ってるツールにgrep機能が付いてないの?
778デフォルトの名無しさん (ワッチョイ 55da-lZna [220.144.30.68])
2020/01/11(土) 13:39:02.07ID:5ateKhzY0 Androidのアプリならmainメソッド探しても仕方ないよ。
mainメソッドはアプリ側でなくてAndroidのシステム側にあるから。
(って話はすでに>>760が書いてくれてるんだけど)
というか、解析したいアプリがどんなものかわからないけど、
- Native Activityで実装されていればdexファイルではなくsoになってる
- Unityとかで開発されていれば実質的なアプリ本体はC#なりで実装されている
とか普通にあるんで、必ずしもdexをclassにしてデコンパイルすれば中身見放題ってわけじゃないです。
mainメソッドはアプリ側でなくてAndroidのシステム側にあるから。
(って話はすでに>>760が書いてくれてるんだけど)
というか、解析したいアプリがどんなものかわからないけど、
- Native Activityで実装されていればdexファイルではなくsoになってる
- Unityとかで開発されていれば実質的なアプリ本体はC#なりで実装されている
とか普通にあるんで、必ずしもdexをclassにしてデコンパイルすれば中身見放題ってわけじゃないです。
779デフォルトの名無しさん (ワッチョイ a301-tgR8 [221.33.176.3])
2020/01/11(土) 14:48:30.35ID:qa2D3VNz0 わかりました。
どうやらそのようです。
soファイルありました。
どうもありがとうございました。
どうやらそのようです。
soファイルありました。
どうもありがとうございました。
780デフォルトの名無しさん (ワッチョイ a301-tgR8 [221.33.176.3])
2020/01/11(土) 14:49:56.63ID:qa2D3VNz0 詳しく教えてくれてありがとうございました。
ggったら全く同じ事が書いてありました。
ggったら全く同じ事が書いてありました。
781デフォルトの名無しさん (ワッチョイ 2361-6Ucs [123.230.238.221])
2020/01/11(土) 15:29:29.31ID:MXX/X4cZ0 >>762
Javaの場合、mainという名前のメソッドはテスト用にどのクラスでもそれぞれ書いても良いとされている。
Androidの場合、Activityを継承したクラスに所属している main という名前のメソッドからプログラムが開始される。
public指定されて外にexportされているクラスの名前を XXX とすると、そのクラスを書くソースファイルの名前は、XXX.javaとなる。
XXX.javaをコンパイルするとXXX.classになる。
本物のJavaは、XXX.classをまとめたものが、*.jarであるが、Androidの場合は、まず、*.classが*.dexに変換された後、さまざまなファイルとアーカイブされて*.aptになる。
Javaの場合、mainという名前のメソッドはテスト用にどのクラスでもそれぞれ書いても良いとされている。
Androidの場合、Activityを継承したクラスに所属している main という名前のメソッドからプログラムが開始される。
public指定されて外にexportされているクラスの名前を XXX とすると、そのクラスを書くソースファイルの名前は、XXX.javaとなる。
XXX.javaをコンパイルするとXXX.classになる。
本物のJavaは、XXX.classをまとめたものが、*.jarであるが、Androidの場合は、まず、*.classが*.dexに変換された後、さまざまなファイルとアーカイブされて*.aptになる。
782デフォルトの名無しさん (ワッチョイ 2361-6Ucs [123.230.238.221])
2020/01/11(土) 15:35:49.54ID:MXX/X4cZ0 >>781
すまん。Activityの場合は、main()ではなく、onCreate()メソッドだったかも知れん。
Androidの場合でも、dexコマンドで直接起動するようなCUIプログラムの場合は、main()でよかったと思う。
ただし、Javaの場合は外部関数がないので当たり前かもしれないが、このmainは、C/C++のような外部関数ではなく、メンバ関数。
すまん。Activityの場合は、main()ではなく、onCreate()メソッドだったかも知れん。
Androidの場合でも、dexコマンドで直接起動するようなCUIプログラムの場合は、main()でよかったと思う。
ただし、Javaの場合は外部関数がないので当たり前かもしれないが、このmainは、C/C++のような外部関数ではなく、メンバ関数。
783デフォルトの名無しさん (ワッチョイ 2361-6Ucs [123.230.238.221])
2020/01/11(土) 16:27:06.17ID:MXX/X4cZ0784デフォルトの名無しさん (ワッチョイ fd61-alJZ [112.136.82.104])
2020/01/11(土) 17:33:12.71ID:lHngeS9z0 ActivityじゃなくてApplicationだ。
答える方もわかってないしスレ違いだし、いい加減向こうでやれや。
答える方もわかってないしスレ違いだし、いい加減向こうでやれや。
785デフォルトの名無しさん (アウアウウー Sa19-JQ6m [106.154.130.141])
2020/01/11(土) 19:55:11.85ID:Dn3xIqPda Javaの有償化について教えてください
PC内に入っているものは「Java SE Development kit 8」なのですが
これでアプリ作って公開したら有償ですか?
Kotlin使っても有償になるのでしょうか?
PC内に入っているものは「Java SE Development kit 8」なのですが
これでアプリ作って公開したら有償ですか?
Kotlin使っても有償になるのでしょうか?
786デフォルトの名無しさん (ブーイモ MM29-oH9J [210.149.252.155])
2020/01/11(土) 21:34:49.76ID:1VjCQQNwM Javaをやろうとするやつは総じてバカなのか? それともこのスレだけなのか?
最近pythonやろうとしてるやつも大概バカばっかだがここはそれ以上
最近pythonやろうとしてるやつも大概バカばっかだがここはそれ以上
787デフォルトの名無しさん (ワッチョイ 1d5f-tgR8 [106.72.150.32])
2020/01/11(土) 23:44:29.27ID:Fe8pyJct0 私思うんです
他のクラスに変数を受け渡すとき
例えばclass1からd=class2(a,b,c);みたいにひとつずつ変数を渡さないで
d=class2(this);にすればいいと思うんです
私思うんです
他のクラスに変数を受け渡すとき
例えばclass1からd=class2(a,b,c);みたいにひとつずつ変数を渡さないで
d=class2(this);にすればいいと思うんです
私思うんです
788デフォルトの名無しさん (ワッチョイ 9d7f-G18V [128.28.60.74])
2020/01/12(日) 00:46:32.13ID:7vCp3mje0789デフォルトの名無しさん (ワッチョイ b59f-pLzZ [118.109.43.71])
2020/01/12(日) 00:51:10.15ID:FbSdnFnB0790デフォルトの名無しさん (アウアウウー Sa19-htaX [106.132.121.116])
2020/01/12(日) 19:22:47.94ID:T1GQsdFba 弱くなります
791デフォルトの名無しさん (ワッチョイ 05b0-H9u6 [180.46.73.208])
2020/01/12(日) 19:44:41.84ID:N/CHSK/80792デフォルトの名無しさん (ワッチョイ db02-ErPi [119.106.128.249])
2020/01/13(月) 02:41:58.54ID:D6MgPK0q0 初質問させていただきます、JAVA初心者です。
Javaにて簡易的なチャットの実装を試みています。
基本部分の仕様は以下の通りです。
・ソースコードはサーバ側プログラムとクライアント側プログラムの2つ
・チャット参加者数は最大5名とし、参加時には他の参加者に「***さんが加わりました」といったメッセージが表示されるようにする。
・参加者は好きなタイミングでメッセージを送信できるようにする。
・他の参加者からのメッセージはサーバが送信してきたタイミングで受信して画面上に表示するようにする。
・他の参加者が抜けた(切断した)場合には、「***さんが抜けました」といったメッセージが表示されるようにする。
現在、サーバ・クライアント間の通信確立までは実装できています。
考え方、実装例をご教授いただけると幸いです。
お手数おかけしますが、ご助力ください。
Javaにて簡易的なチャットの実装を試みています。
基本部分の仕様は以下の通りです。
・ソースコードはサーバ側プログラムとクライアント側プログラムの2つ
・チャット参加者数は最大5名とし、参加時には他の参加者に「***さんが加わりました」といったメッセージが表示されるようにする。
・参加者は好きなタイミングでメッセージを送信できるようにする。
・他の参加者からのメッセージはサーバが送信してきたタイミングで受信して画面上に表示するようにする。
・他の参加者が抜けた(切断した)場合には、「***さんが抜けました」といったメッセージが表示されるようにする。
現在、サーバ・クライアント間の通信確立までは実装できています。
考え方、実装例をご教授いただけると幸いです。
お手数おかけしますが、ご助力ください。
793デフォルトの名無しさん (ワッチョイ e3a3-qRB+ [115.176.101.180])
2020/01/13(月) 12:20:04.08ID:Jh+AJgi90 宿題をここに投げるな
794デフォルトの名無しさん (スププ Sd43-Acsm [49.96.12.123])
2020/01/13(月) 17:57:40.86ID:wJyWxns1d 今、新規開発のFWは選定するとSpring1択になる?
PlayはScalaの方に行ったしStruts2は避けられてるし。
マイクロフレームワークはポコポコ出てきてるけどさ。
PlayはScalaの方に行ったしStruts2は避けられてるし。
マイクロフレームワークはポコポコ出てきてるけどさ。
795デフォルトの名無しさん (ワッチョイ 1d5f-pWSs [106.72.163.96 [上級国民]])
2020/01/13(月) 18:13:43.46ID:PNIqRh180 >>794
SpringとSpring bootの区別はできているのか?
SpringとSpring bootの区別はできているのか?
796デフォルトの名無しさん (ワッチョイ 232c-JQ6m [219.162.234.204])
2020/01/14(火) 04:41:29.56ID:3sd16sWN0 >>792
0から手を動かして作るRailsチャットアプリ【チュートリアル】
https://www.youtube.com/watch?v=WCsgcp5dg7M
とだこうきの動画。
通信には、WebSocket を使ってる
他には、Node.js, Electron でも作れるかも
0から手を動かして作るRailsチャットアプリ【チュートリアル】
https://www.youtube.com/watch?v=WCsgcp5dg7M
とだこうきの動画。
通信には、WebSocket を使ってる
他には、Node.js, Electron でも作れるかも
797デフォルトの名無しさん (ササクッテロラ Spf1-gopL [126.193.125.144])
2020/01/14(火) 14:29:55.91ID:m1u1XKORp なんでinterface作ってクラス名にimplつけた実装クラス作るの?最初からクラスだけじゃダメなの?
798デフォルトの名無しさん (ドコグロ MM13-JyDu [119.240.142.88])
2020/01/14(火) 14:45:34.94ID:/8RfG7cVM >>797
並行作業のスケジュールの都合により、使われる方のクラスを作る前に使う方のクラスを先に作る必要がある場合のためだよ。
使われる方のinterfaceさえ定義しとけばImplがまだ無くても使う方を作れるでしょ。
現実にはこのような逆転した作業は極めて非効率で、たいてい後で不整合が起きて無駄になる。
でもジャップランドのSEはプログラマの稼働率を下げないためにそうせざるを得ないの。
並行作業のスケジュールの都合により、使われる方のクラスを作る前に使う方のクラスを先に作る必要がある場合のためだよ。
使われる方のinterfaceさえ定義しとけばImplがまだ無くても使う方を作れるでしょ。
現実にはこのような逆転した作業は極めて非効率で、たいてい後で不整合が起きて無駄になる。
でもジャップランドのSEはプログラマの稼働率を下げないためにそうせざるを得ないの。
799デフォルトの名無しさん (ブーイモ MMd9-Ru/f [202.214.167.212])
2020/01/14(火) 18:43:28.37ID:0xXDWcnxM ジャップアイランドは今日もハッピーです
800797 (ササクッテロラ Spf1-gopL [126.193.125.144])
2020/01/14(火) 19:29:37.55ID:m1u1XKORp >>798
ありがとうございます。
並行作業のため、理解です。でも本当にそれだけなのでしょうか?interfaceが書ける時点で引数と戻り値は決まっているはずなので、最初からクラスを書いてダミーの戻り値を返すようにしておくのと変わらない気がします。
ありがとうございます。
並行作業のため、理解です。でも本当にそれだけなのでしょうか?interfaceが書ける時点で引数と戻り値は決まっているはずなので、最初からクラスを書いてダミーの戻り値を返すようにしておくのと変わらない気がします。
801デフォルトの名無しさん (ドコグロ MM13-JyDu [119.240.142.88])
2020/01/14(火) 20:09:08.05ID:/8RfG7cVM >>800
よい質問だ。
SE様に作業完了の確認を貰って深夜残業を切り上げるには、当然、作ったものを単体テストしなきゃいけない。
でも使われる側がnull返すか何もしないだけのダミー実装じゃ普通に考えてテスト通るわけない。
どうするか?自分で都合のいい実装をでっち上げてそれを代わりに使うんだよ。
この手法は脳内彼女を相手に恋愛の練習をしているようなもので、どれだけ無駄かは容易に想像できるだろう。
態々interfaceを通さなくても脳内彼女の実装を対象クラスに直接書けばいいじゃないかと思うかもしれないが、
そうするとA君の脳内彼女とB君の脳内彼女が同一人物なのに違う実装になってしまって衝突したり、
いざ本物を実装しようとしたときに既に変なオナニー実装があって混乱するなど不都合が生じる。
ちなみに実は自動テストの都合という面もあるのだが、ドカタITではそんなものはファンタジーだから気にしなくてよい。
よい質問だ。
SE様に作業完了の確認を貰って深夜残業を切り上げるには、当然、作ったものを単体テストしなきゃいけない。
でも使われる側がnull返すか何もしないだけのダミー実装じゃ普通に考えてテスト通るわけない。
どうするか?自分で都合のいい実装をでっち上げてそれを代わりに使うんだよ。
この手法は脳内彼女を相手に恋愛の練習をしているようなもので、どれだけ無駄かは容易に想像できるだろう。
態々interfaceを通さなくても脳内彼女の実装を対象クラスに直接書けばいいじゃないかと思うかもしれないが、
そうするとA君の脳内彼女とB君の脳内彼女が同一人物なのに違う実装になってしまって衝突したり、
いざ本物を実装しようとしたときに既に変なオナニー実装があって混乱するなど不都合が生じる。
ちなみに実は自動テストの都合という面もあるのだが、ドカタITではそんなものはファンタジーだから気にしなくてよい。
802デフォルトの名無しさん (ワッチョイ 9d02-Qvx6 [124.212.87.121 [上級国民]])
2020/01/15(水) 21:30:47.56ID:I5kvS7DO0 int a=10;
a=a+1
System.out.println(a);
a=a+1
System.out.println(a);
803デフォルトの名無しさん (ワッチョイ 455f-0x+Z [106.72.163.96 [上級国民]])
2020/01/16(木) 00:49:53.70ID:aFCqpdJ/0 >>800
決まった名前のメソッドを実装させるため。
決まった名前のメソッドを実装させるため。
804デフォルトの名無しさん (アウアウウー Sa21-SNGL [106.132.129.104])
2020/01/16(木) 21:21:25.94ID:zJukF7BCa >>800
違う実装を後からセットできるじゃない。
違う実装を後からセットできるじゃない。
805デフォルトの名無しさん (アウアウエー Sa13-mgaX [111.239.153.45])
2020/01/16(木) 22:22:37.65ID:rwq+tT6ga806デフォルトの名無しさん (ワッチョイ fb01-C1bT [111.90.14.57])
2020/01/16(木) 23:07:38.38ID:Z0H9lpow0 わかるわーw
807デフォルトの名無しさん (ドコグロ MM41-mgaX [122.130.225.133])
2020/01/16(木) 23:23:00.28ID:afqzkFYPM Goなんかは言語のコンセプトとして「実際に必要になる前の抽象化は糞」と(暗にJavaを指して)言ってるね
その通りだと思う
その通りだと思う
808デフォルトの名無しさん (ワッチョイ fb01-C1bT [111.90.14.57])
2020/01/16(木) 23:39:59.75ID:Z0H9lpow0 Goを設計したのはUnixの開発者たちだからねー
Unixはできるだけグルーコードを薄くすることで移植しやすく堅牢で保守しやすいシステムになった
Javaもそうしたが良いのかもわからんね
Unixはできるだけグルーコードを薄くすることで移植しやすく堅牢で保守しやすいシステムになった
Javaもそうしたが良いのかもわからんね
809デフォルトの名無しさん (ワッチョイ e3ad-nP71 [27.139.77.105])
2020/01/17(金) 00:36:40.53ID:VVaP2eJK0 Kotlin もよろしく
810デフォルトの名無しさん (ドコグロ MM03-rWIW [49.129.184.242])
2020/01/17(金) 00:37:06.20ID:Lhu1rqyiM ことりん
811デフォルトの名無しさん (アウアウウー Sa21-SNGL [106.132.131.54])
2020/01/17(金) 09:07:32.24ID:4YEO+2r4a812デフォルトの名無しさん (ドコグロ MM41-mgaX [122.130.225.133])
2020/01/17(金) 10:04:29.73ID:0sb73h15M >>811
君はSwingを作っているのか?
俺も元々独学だったからよくわかるんだが、独学プログラマは不特定多数向けのプロダクトしか手本がないから、
ユースケースを特定せずに一般的や抽象化を行うことを必須と思い込みがちなんだよ
現実のアプリケーションプログラミングにおいては、一般に、極力絞り込んだ必要最低限のコードを書くほうが継続的な開発が容易になる
君はSwingを作っているのか?
俺も元々独学だったからよくわかるんだが、独学プログラマは不特定多数向けのプロダクトしか手本がないから、
ユースケースを特定せずに一般的や抽象化を行うことを必須と思い込みがちなんだよ
現実のアプリケーションプログラミングにおいては、一般に、極力絞り込んだ必要最低限のコードを書くほうが継続的な開発が容易になる
813デフォルトの名無しさん (オッペケ Sr19-uB0D [126.34.59.159])
2020/01/18(土) 00:55:57.15ID:6oxaDxGzr OSや環境の違いを吸収するコンクリートクラスはOSや環境ごとの名前になるはずで、Implなんて無色透明な名前にはならないよ
それにテストだけならモックアップを動的生成させればいい
フレームワークと実装を分けたいときとか、Implが好ましい状況もあるけど、インターフェースを将来のため柔軟さのためにと増やすのはYAGNI原則とKISS原則に反する
それにテストだけならモックアップを動的生成させればいい
フレームワークと実装を分けたいときとか、Implが好ましい状況もあるけど、インターフェースを将来のため柔軟さのためにと増やすのはYAGNI原則とKISS原則に反する
814デフォルトの名無しさん (ワッチョイ 455f-0x+Z [106.72.163.96 [上級国民]])
2020/01/18(土) 01:00:29.14ID:vFXF5Tw00 典型的なJava信者のご登場。
こだわっているところがズレまくり。
こだわっているところがズレまくり。
815デフォルトの名無しさん (アウアウエー Sa13-mgaX [111.239.153.45])
2020/01/18(土) 01:23:04.05ID:AhPxC9uwa 実際、開放閉鎖原則がまともに機能してる現場なんか存在するんだろうか
経験上、むやみやたらとinterfaceが定義されててもそれらがポリモーフィズムに活用されることはほぼ無いし、
ほとんどの修正は既存の具象クラスに対して直接加えられる
日本のIT土方のレベルが低いとかそういう話ではなく、自社サービスでも海外のOSSでも同じだ
経験上、むやみやたらとinterfaceが定義されててもそれらがポリモーフィズムに活用されることはほぼ無いし、
ほとんどの修正は既存の具象クラスに対して直接加えられる
日本のIT土方のレベルが低いとかそういう話ではなく、自社サービスでも海外のOSSでも同じだ
816デフォルトの名無しさん (スププ Sd03-heHR [49.96.13.73])
2020/01/18(土) 12:34:09.50ID:XaNWIYwld 結局インターフェースごと差し替えるから意味内わかるわー
817デフォルトの名無しさん (アウアウクー MM99-0x+Z [36.11.225.57 [上級国民]])
2020/01/18(土) 13:25:24.64ID:0gCd/F0VM 狂ったJava信者は仕様を満たすことよりもコードにこだわり、いつまでたっても物ができあがらない。
保守性が高いと自信満々だったのに、いざ保守になると面倒なロジックになっていて変更に時間がかかる。
最初にリリースしたものを最適化しすぎる傾向があって、使用が変わるたびにたくさんコードを修正しなくてはいけなくなる。
保守性が高いコードとは、少しダサい感じのコードなのに、この現実を受け入れられない。
保守性が高いと自信満々だったのに、いざ保守になると面倒なロジックになっていて変更に時間がかかる。
最初にリリースしたものを最適化しすぎる傾向があって、使用が変わるたびにたくさんコードを修正しなくてはいけなくなる。
保守性が高いコードとは、少しダサい感じのコードなのに、この現実を受け入れられない。
818デフォルトの名無しさん (ワッチョイ fb01-C1bT [111.90.14.57])
2020/01/18(土) 14:47:55.78ID:meR2Lc880 >>817
わかるわー
わかるわー
819デフォルトの名無しさん (ワッチョイ fb01-C1bT [111.90.14.57])
2020/01/18(土) 14:48:34.90ID:meR2Lc880 みんな同じこと思ってるんだなー
820デフォルトの名無しさん (ワッチョイ 75da-A78j [114.184.58.168])
2020/01/18(土) 15:12:21.42ID:G/K26Ddi0 最適化するな、有効なジャバ
822デフォルトの名無しさん (ワッチョイ 6b63-6zBS [153.228.65.196])
2020/01/18(土) 16:58:42.51ID:NF270nDn0 そうなんだ
823デフォルトの名無しさん (ワッチョイ 4502-VyS5 [106.167.99.164])
2020/01/18(土) 23:06:18.65ID:Ov2B9gue0 HttpURLConnection使ってjson文字列をGETで送信したい
bodyになにか書き込むと勝手にGET通信じゃなくて
POST通信に書き換わってしまうんだがどうすればGETのままbodyに書き込める?
bodyになにか書き込むと勝手にGET通信じゃなくて
POST通信に書き換わってしまうんだがどうすればGETのままbodyに書き込める?
824デフォルトの名無しさん (ワッチョイ 5dda-JESV [220.144.30.68])
2020/01/18(土) 23:09:15.22ID:CUwsiqTs0 そもそもHTTPの仕様上、どうやってGETでbodyが送れると?
825デフォルトの名無しさん (ドコグロ MM93-rWIW [119.241.53.113])
2020/01/19(日) 01:01:44.39ID:Sewbs9bsM どんだけでかいデータか知らんがurlエンコードしてクエリにセットすりゃいいんじゃね
826デフォルトの名無しさん (ワッチョイ e32c-Sfrr [219.162.234.204])
2020/01/19(日) 01:13:46.61ID:qcodQ+dh0 URL のクエリー部分に、JSON を入れる人は、いないw
普通に、キー・値で書け!
普通に、キー・値で書け!
827826 (ワッチョイ e32c-Sfrr [219.162.234.204])
2020/01/19(日) 06:36:58.45ID:qcodQ+dh0 以下は、VSCode の拡張機能、REST Client のサンプルだけど、
たぶん、JSON は、POST しかないと思う
以下を、test.http として保存して、
URL を、http://localhost:8888 などに変えて、REST Client でやってみれば?
GET https://example.com/comments/1 HTTP/1.1
###
GET https://example.com/topics/1 HTTP/1.1
###
POST https://example.com/comments HTTP/1.1
content-type: application/json
{
"name": "sample",
"time": "Wed, 21 Oct 2015 18:27:50 GMT"
}
たぶん、JSON は、POST しかないと思う
以下を、test.http として保存して、
URL を、http://localhost:8888 などに変えて、REST Client でやってみれば?
GET https://example.com/comments/1 HTTP/1.1
###
GET https://example.com/topics/1 HTTP/1.1
###
POST https://example.com/comments HTTP/1.1
content-type: application/json
{
"name": "sample",
"time": "Wed, 21 Oct 2015 18:27:50 GMT"
}
828デフォルトの名無しさん (ワッチョイ 455f-FGhO [106.72.150.32])
2020/01/19(日) 11:55:03.03ID:Qx904AID0 publicとかprevateとかつける意味あるの?
メンドウクサイんですけど
メンドウクサイんですけど
829デフォルトの名無しさん (ワッチョイ a501-H2qE [122.16.239.38])
2020/01/19(日) 12:12:33.24ID:iFGOF6Al0 >>828
YOU、全部グローバル変数にしちゃいなYO!
YOU、全部グローバル変数にしちゃいなYO!
830826 (ワッチョイ e32c-Sfrr [219.162.234.204])
2020/01/19(日) 12:43:27.77ID:qcodQ+dh0 Ruby でやってみた!
標準のWEBrick サーバーで、>>827
のJSON を、POST で受け取って、そのまま返信する
require 'webrick'
require 'json'
srv = WEBrick::HTTPServer.new( {
:BindAddress => '127.0.0.1', :Port => 8888 } )
srv.mount_proc( '/' ) do |req, res|
res[ "content-type" ] = "text/plain"
# p JSON.parse( req.body ) # JSON を、Ruby Object に変換する事もできる
res.body = req.body
end
Signal.trap( :INT ){ srv.shutdown } # Ctrl+C で終了
srv.start
標準のWEBrick サーバーで、>>827
のJSON を、POST で受け取って、そのまま返信する
require 'webrick'
require 'json'
srv = WEBrick::HTTPServer.new( {
:BindAddress => '127.0.0.1', :Port => 8888 } )
srv.mount_proc( '/' ) do |req, res|
res[ "content-type" ] = "text/plain"
# p JSON.parse( req.body ) # JSON を、Ruby Object に変換する事もできる
res.body = req.body
end
Signal.trap( :INT ){ srv.shutdown } # Ctrl+C で終了
srv.start
831デフォルトの名無しさん (ワッチョイ a3a3-9xZB [115.176.101.180])
2020/01/19(日) 19:42:05.87ID:U7GTLDND0 >>828
お前みたいなバカは全部privateがお似合いw
お前みたいなバカは全部privateがお似合いw
832デフォルトの名無しさん (ササクッテロル Sp41-hE/J [126.233.105.215])
2020/01/22(水) 20:00:42.92ID:Tupj1TxXp String yyyyをSQL用にDate変換するにはどうしたらいいんだ…?
調べてもyyyy/mm/ddの記事ばかり
調べてもyyyy/mm/ddの記事ばかり
833デフォルトの名無しさん (ドコグロ MM43-Wb6n [49.129.187.17])
2020/01/22(水) 20:44:41.49ID:Ad54xjX8M mmddに1月1日でも入れときゃいいんじゃね
834デフォルトの名無しさん (ワッチョイ 232c-++Vr [219.162.234.204])
2020/01/22(水) 23:56:49.84ID:fyGKoId60 Ruby on Rails は、抽象的なtimestamps 型を使う。
それがDB のMigration で、各DB の時刻型になる!
時刻は、日付型も含んでいる。
0時0分0秒にすればよい
UTC 時刻で保存しておけば、各国のローカルタイムにも変換できる
それがDB のMigration で、各DB の時刻型になる!
時刻は、日付型も含んでいる。
0時0分0秒にすればよい
UTC 時刻で保存しておけば、各国のローカルタイムにも変換できる
835デフォルトの名無しさん (ワッチョイ f501-KCcj [126.168.249.123])
2020/01/23(木) 07:06:00.23ID:YEvEyesH0 jdkが含まれてると有償になるみたいですがwindowsならアプリケーションの一覧に出てくるでしょうか?
java使ってるっぽいアプリがあるのですがjdkが入ってるか入ってないか調べる方法が解りません
java使ってるっぽいアプリがあるのですがjdkが入ってるか入ってないか調べる方法が解りません
836デフォルトの名無しさん (ワッチョイ 1b01-7vT5 [111.90.14.57])
2020/01/23(木) 07:28:23.50ID:cFfrxTRF0 >>832
var localDate = LocalDate.of(Integer.parseInt("2019"), 1, 1);
var sqlDate = java.sql.Date.valueOf(localDate);
System.out.println(sqlDate);
var localDate = LocalDate.of(Integer.parseInt("2019"), 1, 1);
var sqlDate = java.sql.Date.valueOf(localDate);
System.out.println(sqlDate);
837デフォルトの名無しさん (ワッチョイ 5dda-Jq7D [114.184.58.168])
2020/01/23(木) 09:57:36.39ID:gE68l7u+0 >>834
ス・レ・チ
ス・レ・チ
838デフォルトの名無しさん (オッペケ Sr41-2JYP [126.34.57.200])
2020/01/23(木) 12:52:46.95ID:mWAdwIcyr var localDate = Year.parse("2019").atDay(1);
と書くとちょっとだけすっきり
と書くとちょっとだけすっきり
839デフォルトの名無しさん (ブーイモ MM6b-q+KH [163.49.201.207])
2020/01/27(月) 14:02:10.88ID:SzZb6gPjM 月が1から始まるだけで感涙しそう
840デフォルトの名無しさん (ワッチョイ 6d5f-FkkX [106.72.150.32])
2020/01/28(火) 17:07:27.77ID:tlwivndu0 finalって何のためにあるの?
変更できない変数なら変数にしなきゃいいじゃん
ばかみたい
変更できない変数なら変数にしなきゃいいじゃん
ばかみたい
841デフォルトの名無しさん (ワッチョイ a301-RXuz [221.185.225.179])
2020/01/28(火) 17:14:06.59ID:CmoTnj/f0 え
842デフォルトの名無しさん (ブーイモ MM43-ig8/ [49.239.64.110])
2020/01/28(火) 17:56:19.12ID:EaxnzHwqM >>840
必要になったときに計算で値を算出できる、かつ、計算コストが小さいならメソッドにしても良いかも知れない
必要になったときに計算で値を算出できる、かつ、計算コストが小さいならメソッドにしても良いかも知れない
843デフォルトの名無しさん (ブーイモ MM43-ig8/ [49.239.64.110])
2020/01/28(火) 18:00:44.22ID:EaxnzHwqM 変数を使用するときは、値を得るタイミングと値を使用するタイミングが異なるときであったり、計算コストが高いときであったりするから、変数を消すのはそれなりに大変
844デフォルトの名無しさん (ドコグロ MMb1-Wb6n [118.109.189.205])
2020/01/28(火) 19:41:55.33ID:HF/SUcrCM845デフォルトの名無しさん (ワッチョイ 5dda-Jq7D [114.184.58.168])
2020/01/28(火) 20:54:00.04ID:z4RJoCBm0 ファイナルアンサーの為に
846デフォルトの名無しさん (アウアウウー Sa9d-lBRq [106.132.128.243])
2020/01/29(水) 10:02:47.97ID:Ji+gdkxYa >>840
定数に使える。
同じ意味でプログラムの複数箇所でその変数を使っている場合、変更時に変数への初期化箇所を直すだけで全ての変更が終わる。
直接数値などを書いた場合はプログラムの関連する箇所の全ての修正が必要となり修正ミスや修正忘れによるバグの発生率が増える。
定数に使える。
同じ意味でプログラムの複数箇所でその変数を使っている場合、変更時に変数への初期化箇所を直すだけで全ての変更が終わる。
直接数値などを書いた場合はプログラムの関連する箇所の全ての修正が必要となり修正ミスや修正忘れによるバグの発生率が増える。
847デフォルトの名無しさん (オッペケ Src5-W8VJ [126.193.159.24])
2020/01/29(水) 10:47:34.48ID:5KUzLeA7r 定数でしか使わないのは勿体ない
immutable programmingについて学ぶとfinalの価値が高いことに気付くよ
Javaだとfinal打つのが面倒で省きがちだけどね
immutable programmingについて学ぶとfinalの価値が高いことに気付くよ
Javaだとfinal打つのが面倒で省きがちだけどね
848デフォルトの名無しさん (ブーイモ MMcb-qSW8 [163.49.201.28])
2020/01/29(水) 11:16:39.32ID:Fo4vX5x5M >>840
finalクラス、finalメソッド、final変数とそれぞれ役割がある
変数だけについて言うとfinalを使うのは定数を定義したい場合とイミュータブルな変数を定義したい場合
イミュータブルな変数とは初期化後は変更されない事がコンパイラ等によって保証された変数
オブジェクトが生成されてから破棄されるまで変数の値が不変である事が保証されると
意図しない変更を防止(バグ回避)できたり、同時実行制御ロジックをシンプルにできたり、IDではなく値の同値性で比較すべきオブジェクトを表現できたり、変更されない事を前提とした最適化ができたりと様々なメリットがある
Kotlinのvar, val, constのようにモダンな言語はほぼ全てミュータブルな変数、イミュータブルな変数、定数の3つを明確に使い分けられるように設計されている
finalクラス、finalメソッド、final変数とそれぞれ役割がある
変数だけについて言うとfinalを使うのは定数を定義したい場合とイミュータブルな変数を定義したい場合
イミュータブルな変数とは初期化後は変更されない事がコンパイラ等によって保証された変数
オブジェクトが生成されてから破棄されるまで変数の値が不変である事が保証されると
意図しない変更を防止(バグ回避)できたり、同時実行制御ロジックをシンプルにできたり、IDではなく値の同値性で比較すべきオブジェクトを表現できたり、変更されない事を前提とした最適化ができたりと様々なメリットがある
Kotlinのvar, val, constのようにモダンな言語はほぼ全てミュータブルな変数、イミュータブルな変数、定数の3つを明確に使い分けられるように設計されている
849デフォルトの名無しさん (オッペケ Src5-W8VJ [126.193.159.24])
2020/01/29(水) 12:10:44.48ID:5KUzLeA7r 素晴らしい回答だな
850デフォルトの名無しさん (アウアウウー Sa9d-lBRq [106.132.128.243])
2020/01/29(水) 12:16:25.17ID:Ji+gdkxYa そうだな。
それと、こういう初心者定番の質問と回答をまとめたwikiとか作っとくと良いのではないか?
Javaだと既にあるかな?
それと、こういう初心者定番の質問と回答をまとめたwikiとか作っとくと良いのではないか?
Javaだと既にあるかな?
851デフォルトの名無しさん (ワッチョイ f15f-0Ybi [106.72.150.32])
2020/02/01(土) 00:12:05.55ID:qUTCHDuq0 理屈はわかるが実践としてfinal使う人いるか?
いたら連れてきてくれ
いたら連れてきてくれ
852デフォルトの名無しさん (ワッチョイ fb01-rcOU [111.90.14.57])
2020/02/01(土) 01:16:32.43ID:kZmU3WGD0 マルチスレッドのプログラム書くときとか
ラムダ式使ったり匿名クラス使ったりするときにfinal使うっしょ
使いまくりっすよ
まあ最近のJavaはコンパイラが自動的にfinalにしてくれたりするけど
ラムダ式使ったり匿名クラス使ったりするときにfinal使うっしょ
使いまくりっすよ
まあ最近のJavaはコンパイラが自動的にfinalにしてくれたりするけど
853デフォルトの名無しさん (ワッチョイ 13ad-e4+k [27.139.41.170])
2020/02/01(土) 02:35:49.24ID:SqAgZ26K0 >>851
君だってライブラリ側でfinal指定の引数の関数を使うときは使うだろう?
君だってライブラリ側でfinal指定の引数の関数を使うときは使うだろう?
854デフォルトの名無しさん (オッペケ Src5-W8VJ [126.193.159.24])
2020/02/01(土) 04:50:38.45ID:dcKIHlgcr おれはメンバ変数ではfinalは隙あらば書きたい
引数とローカル変数では書きたくない
5+1文字打つことのコスパが全然違う
immutableクラスを作るときに凡ミス防止を助けてくれるし
ほかの開発者が後で破壊的な変更をしてしまわないようにアピールする効果も狙える
実践で使わないなんて言えるのはimmutableの便利さにまだ実感をもってないからだよ
もしJavaのStringがStringBufferだったら阿鼻叫喚だったろうし
Java8でDateとCalendarが残念な過去のものとされたのもimmutableが理由のひとつとしてJSRで挙げられてる
引数とローカル変数では書きたくない
5+1文字打つことのコスパが全然違う
immutableクラスを作るときに凡ミス防止を助けてくれるし
ほかの開発者が後で破壊的な変更をしてしまわないようにアピールする効果も狙える
実践で使わないなんて言えるのはimmutableの便利さにまだ実感をもってないからだよ
もしJavaのStringがStringBufferだったら阿鼻叫喚だったろうし
Java8でDateとCalendarが残念な過去のものとされたのもimmutableが理由のひとつとしてJSRで挙げられてる
855デフォルトの名無しさん (ワッチョイ 53a3-2G11 [115.176.107.163])
2020/02/01(土) 09:33:35.69ID:9lmFlpKY0 final プリミティブ=イミュータブル←わかる
final ミュータブル←それただのリードオンリーや幸子
final ミュータブル←それただのリードオンリーや幸子
856デフォルトの名無しさん (オッペケ Src5-W8VJ [126.193.159.24])
2020/02/01(土) 09:53:46.19ID:dcKIHlgcr final イミュータブルにすればいい
final ミュータブルだったとしてもコンストラクタでコピーして不用意なgetterを付けずカプセル化するなら結果的に同じ
final ミュータブルだったとしてもコンストラクタでコピーして不用意なgetterを付けずカプセル化するなら結果的に同じ
857デフォルトの名無しさん (オッペケ Src5-W8VJ [126.193.159.24])
2020/02/01(土) 10:02:53.61ID:dcKIHlgcr 節子、それを言うなら幸子やない。それ年末に凄い衣装で歌う人や
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★8 [ぐれ★]
- 【外交】元台湾総統・馬英九氏、高市首相発言に「台湾を危険にさらす」台湾海峡の問題は「両岸の中国人が自ら話し合うべき」★2 [1ゲットロボ★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 [おっさん友の会★]
- 【芸能】俳優・野村宏伸 テレビドラマの制作費やギャラの現状訴え 「比べものにならない位、今は低くて…」 [冬月記者★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【日本終了】高市のせいで円、売られまくる【エーン】 [305926466]
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- 韓国の観光業界「高市さんありがとう!」韓国が日本に代わり中国人の海外旅行先人気ナンバーワンに [603416639]
- 【ぺこ専🐰】なんG 兎田ぺこら実況スレ🏡【ホロライブ▶】
- 中国発の日本行きチケット、50万枚キャンセルwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww✈ [329329848]
- グラボ製造メーカーが最後通達 「来年以降グラボはとんでもない値上がりをします。手頃な価格で買えるのは今が最後です」 [197015205]
