★★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
790デフォルトの名無しさん (アウアウウー 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 節子、それを言うなら幸子やない。それ年末に凄い衣装で歌う人や
858デフォルトの名無しさん (ワッチョイ c1da-unxX [114.184.58.168])
2020/02/01(土) 11:15:25.54ID:HI9gNj8C0 final answer;
>>857
蛍の墓なんて、上映当時は暗くて嫌だったのでトトロしか観なかったんだよね…
蛍の墓なんて、上映当時は暗くて嫌だったのでトトロしか観なかったんだよね…
860デフォルトの名無しさん (ワッチョイ c1da-unxX [114.184.58.168])
2020/02/01(土) 13:35:17.93ID:HI9gNj8C0 日本入国禁止
861デフォルトの名無しさん (ワッチョイ c101-ijU5 [114.177.250.32])
2020/02/01(土) 14:40:22.67ID:6DXJSl9u0 幸子てw
素なのかボケなのかw
素なのかボケなのかw
862デフォルトの名無しさん (ワッチョイ a9e6-O6vO [14.3.9.255])
2020/02/01(土) 15:10:43.95ID:+HWOljVE0 幸せを数えたら片手にさえ余る
863デフォルトの名無しさん (オッペケ Src5-W8VJ [126.193.159.24])
2020/02/01(土) 15:47:27.99ID:dcKIHlgcr final int 年齢;
public 彼女(int 年齢) {
this.年齢 = 年齢;
}
var 俺の嫁 = new 彼女(18);
こう書くといつまでも年齢が変わらない彼女が手に入る
finalで保証されているから安心ずっとピチピチギャルじゃよ
ローカル変数の俺の嫁にfinalは書かない
再代入は自由だから新作や来期が来たら替えてもいいぞ
定数(static)ではないのでこうも書ける
var 俺のハーレム = List.of(new 彼女(25), new 彼女(12), /* 以下略 */);
※ただし彼女は2次元限定だ
public 彼女(int 年齢) {
this.年齢 = 年齢;
}
var 俺の嫁 = new 彼女(18);
こう書くといつまでも年齢が変わらない彼女が手に入る
finalで保証されているから安心ずっとピチピチギャルじゃよ
ローカル変数の俺の嫁にfinalは書かない
再代入は自由だから新作や来期が来たら替えてもいいぞ
定数(static)ではないのでこうも書ける
var 俺のハーレム = List.of(new 彼女(25), new 彼女(12), /* 以下略 */);
※ただし彼女は2次元限定だ
864デフォルトの名無しさん (ワッチョイ d9da-Y6bJ [220.144.30.68])
2020/02/01(土) 19:17:32.12ID:PDlR+uaq0 俺のハーレム.stream().forEach(嫁 -> 嫁.ほにゃらら(俺));
この場合、"俺" は final または effectively final でなければならない、
こういうことですね
この場合、"俺" は final または effectively final でなければならない、
こういうことですね
865デフォルトの名無しさん (ワッチョイ a9e6-x8m7 [14.3.13.235])
2020/02/01(土) 23:48:37.32ID:OSOKpenJ0 副作用を口実に何も与えられず使い捨て
そして最後はGC行き
←GC|
. ̄.|| ̄ オレ氏┗(^o^ )┓三
|| ┏┗ 三
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
そして最後はGC行き
←GC|
. ̄.|| ̄ オレ氏┗(^o^ )┓三
|| ┏┗ 三
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
866デフォルトの名無しさん (アウアウウー Sa9d-lBRq [106.132.128.127])
2020/02/03(月) 11:19:40.31ID:EEPHYlO9a Kotlin もよろしく
867デフォルトの名無しさん (ワッチョイ cd5f-mZAX [106.72.150.32])
2020/02/08(土) 15:50:35.38ID:XDLxtpqZ0 EditTextのGONEを使っても大丈夫ですか?
868デフォルトの名無しさん (ワッチョイ cd5f-mZAX [106.72.150.32])
2020/02/08(土) 15:52:21.65ID:XDLxtpqZ0 まちがいました
スレ違いでした
失礼します
スレ違いでした
失礼します
869デフォルトの名無しさん (スッップ Sd43-pG8F [49.98.131.21])
2020/02/11(火) 12:22:58.90ID:zPkn4No/d 外部apiを使うんですが
apiキーをコードに記述して直接apiを叩いてクライアントだけで完結させるか
サーバーにapiキーだけ置いてそれを取得する形にするか
サーバーがapiを使った処理をやって結果だけ返すようにするか
どれがいいですかね?
apiキーをコードに記述して直接apiを叩いてクライアントだけで完結させるか
サーバーにapiキーだけ置いてそれを取得する形にするか
サーバーがapiを使った処理をやって結果だけ返すようにするか
どれがいいですかね?
870デフォルトの名無しさん (ワッチョイ bdda-56gX [114.184.78.241])
2020/02/11(火) 15:07:20.43ID:FrrTL3l30 イミフ
871デフォルトの名無しさん (ラクペッ MM31-Xfzx [134.180.3.180])
2020/02/11(火) 15:10:00.31ID:rTcYf6uaM まあ二番目以外じゃね?
java関係ないけど
java関係ないけど
872デフォルトの名無しさん (アウアウウー Sa09-6yOj [106.132.123.2])
2020/02/11(火) 17:51:44.15ID:ix+UlUL8a ゴーンは逃亡しました。
873デフォルトの名無しさん (アウアウウー Sa09-6yOj [106.132.123.2])
2020/02/11(火) 17:52:59.56ID:ix+UlUL8a あ、リロード忘れて俺の書き込みもイミフに
874デフォルトの名無しさん (ワッチョイ c71d-sg8N [118.238.238.98])
2020/02/12(水) 01:53:03.72ID:CB9IiDBv0 実務経験1年で月収80万稼げるエンジニアになった理由
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
https://www.youtube.com/watch?v=DrbbyGsHQic
意識が低いエンジニアこそフリーランスになれ
https://www.youtube.com/watch?v=nSEaAJlgjbQ
フリーランスエンジニアの週3労働ってどんな感じ?
https://www.youtube.com/watch?v=8yjoDCdbzMc
ぼくがスキルのない社畜ならこうやって脱する
https://www.youtube.com/watch?v=aae8xxbUlMM
初めて人を雇ったらもう二度とサラリーマンをやりたくないと思った話
https://www.youtube.com/watch?v=U0OCGRVLFsM
プログラミングは文系でも余裕で出来ます!理由を現役プログラマーが解説
https://www.youtube.com/watch?v=iBOeiSKBIW8
貧乏人こそ社会不適合者
https://www.youtube.com/watch?v=O3BT72BIBJI
元ド貧乏が教える】貧乏を抜け出すための2つの考え方
https://www.youtube.com/watch?v=IRrCgTy3ckc
より良いオファー貰ってるのに転職しないとか何考えてるの?
https://www.youtube.com/watch?v=i0J6uRhlj7o
875デフォルトの名無しさん (ワッチョイ 03da-OxJ8 [114.184.78.241])
2020/02/12(水) 15:18:31.59ID:9vv3BaQq0 閑話休題
876デフォルトの名無しさん (ワッチョイ 7f61-Qdob [36.3.104.76])
2020/02/18(火) 05:20:22.57ID:s//kq2Ho0 JavaFXがswingに撮って変わった原因てなんですか?
Swingのほうが異なるos間で動く可能性は高い?
Swingのほうが異なるos間で動く可能性は高い?
877デフォルトの名無しさん (アウアウウー Sa1b-H6bD [106.180.2.111])
2020/02/18(火) 08:37:15.21ID:Bhh8NQSMa JavaFXはコミュニティに移管され事実上廃止
Swingも元々ほとんど使われてない
取って代わったも原因もクソも、そもそもJavaでGUIアプリなんて今も昔もはっきり言って誰もやっていない
Swingも元々ほとんど使われてない
取って代わったも原因もクソも、そもそもJavaでGUIアプリなんて今も昔もはっきり言って誰もやっていない
878デフォルトの名無しさん (ブーイモ MMfe-FtOb [163.49.201.76])
2020/02/18(火) 10:23:36.60ID:B1+kI16CM >>877
なぜなんですかね?
なぜなんですかね?
879デフォルトの名無しさん (ワッチョイ 2261-sV+C [61.245.75.54])
2020/02/18(火) 18:13:46.94ID:sX1qjJQt0 >>877
アメリカにはゲームが有ったらしい。
アメリカにはゲームが有ったらしい。
880デフォルトの名無しさん (オッペケ Sr3f-+TfY [126.208.150.114])
2020/02/18(火) 20:53:50.65ID:KdC1vrBfr EclipseやIntelliJといったJava用IDEくらいしかJava製GUIアプリ思いつかん
881デフォルトの名無しさん (ワッチョイ 22ad-ievF [27.139.41.170])
2020/02/18(火) 23:03:56.74ID:LK2OtjFi0 Oracleのインストーラが裏に行っちゃっていつも困った
882デフォルトの名無しさん (アウアウウー Sa57-6k5J [106.132.129.246])
2020/02/19(水) 14:10:45.35ID:/R79ylGQa >>878
歴史的な事情
歴史的な事情
883デフォルトの名無しさん (ブーイモ MM57-wfSA [202.214.230.117])
2020/02/19(水) 14:14:18.61ID:1aV3jaSpM ネイティブコンパイル出来るようになったからGUIアプリの需要結構あると思うけどね
C#のネイティブコンパイラまだ実用レベルにないし
C#のネイティブコンパイラまだ実用レベルにないし
884デフォルトの名無しさん (ブーイモ MM97-oe+T [210.138.6.115])
2020/02/19(水) 14:37:29.31ID:4iImSo2cM >>882
どういう歴史的事情なのですか?
どういう歴史的事情なのですか?
885デフォルトの名無しさん (ブーイモ MM97-oe+T [210.138.6.115])
2020/02/19(水) 14:38:16.24ID:4iImSo2cM JavaのGUIが普及さなかったことに僕は納得できません
886デフォルトの名無しさん (アウアウウー Sa57-6k5J [106.132.129.246])
2020/02/19(水) 18:31:45.86ID:/R79ylGQa >>884
Javaが広まり始めた90年代後半のPCは遅くてメモリも少なく、JavaVM起動直後の初期化でとても時間が掛かった。もちろん何もかもが遅く当然GUIも遅かった。
またJavaプログラム以外に別途JavaVMをインストールしておかねばならず初心者にはこれが壁になり普及を大きく妨げた。
ということでPCのデスクトップアプリケーションとしてのJavaは早々に死に、サーバーサイドのプログラムとして使われる事が多くなった。GUIの進化などするわけがない。
ただしAndroidによってクライアント側のGUIが救われたとは思える。主にスマホやタブレットになるが。
Javaが広まり始めた90年代後半のPCは遅くてメモリも少なく、JavaVM起動直後の初期化でとても時間が掛かった。もちろん何もかもが遅く当然GUIも遅かった。
またJavaプログラム以外に別途JavaVMをインストールしておかねばならず初心者にはこれが壁になり普及を大きく妨げた。
ということでPCのデスクトップアプリケーションとしてのJavaは早々に死に、サーバーサイドのプログラムとして使われる事が多くなった。GUIの進化などするわけがない。
ただしAndroidによってクライアント側のGUIが救われたとは思える。主にスマホやタブレットになるが。
887デフォルトの名無しさん (ワッチョイ b3e9-IdAT [222.15.235.177])
2020/02/19(水) 18:34:21.04ID:7ZNyFvkM0 swingがスレッドセーフじゃないと知らずに別スレッドに投げて処理してた。
TextFieldは大丈夫だった。comboboxがうまく動かなくて調べて初めて知った。
TextFieldは大丈夫だった。comboboxがうまく動かなくて調べて初めて知った。
888デフォルトの名無しさん (ブーイモ MM97-oe+T [210.138.6.115])
2020/02/19(水) 18:59:54.45ID:4iImSo2cM >>886
納得しました
納得しました
889デフォルトの名無しさん (JP 0Hdf-DPpo [153.143.139.144])
2020/02/20(木) 11:02:01.43ID:vFkAWpkQH■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 【DAZN】ワールドカップ欧州予選総合 ★5
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 【ATP】テニス総合実況スレ2025 Part 211【WTA】
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 自閉症が「んなっしょい」と連呼するお🏡
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- 両手でフレミングの法則やってくれ [577451214]
- 日本人の海外旅行したきのマナーよくなったのはいつから
- へそグリグリ
