★★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
2019/07/14(日) 02:22:08.36ID:PhrrbKHI0
固定リスト(aslist)と不変リスト(list.of)の意味の違いがわかりません。

addとか操作できないなら同じじゃないんですか?
484デフォルトの名無しさん (ワッチョイ d2b9-YtL5 [123.48.158.50])
垢版 |
2019/07/14(日) 03:04:54.15ID:uKA/y8Qo0
プロジェクトをjarに出力しようとしてる。
jarのmeta-infフォルダの内容をカスタマイズしたいがどうすればできるか?
485デフォルトの名無しさん (ワッチョイ d2b9-YtL5 [123.48.158.50])
垢版 |
2019/07/14(日) 04:34:56.16ID:uKA/y8Qo0
Javaプロジェクトで作成してソースフォルダ直下に置いたらできた
でもMavenプロジェクトだとソースフォルダ直下に何かを置くという操作ができないな
486デフォルトの名無しさん (ワッチョイ 9e02-24gz [175.134.57.7])
垢版 |
2019/07/14(日) 04:53:07.55ID:VYOKuUQn0
>>483
https://codeday.me/jp/qa/20190310/372440.html
2019/07/17(水) 13:24:48.47ID:AbaZohHR0
Javaのアップデートに関する質問です。
環境はwindows8.1で、タスクバーにJavaのアイコンが現れて「Java Update利用可能」の状態なのですが、
アイコンをダブルクリックすると

スクリプトエラー
このページでスクリプトエラーが発生しました。
ライン; 1
文字 : 1
エラー: ')' がありません。
コード: 0
URL:

と表示されてインストールが出来ません。
どうすればアップデートできるのでしょうか?
2019/07/17(水) 13:30:46.74ID:fonZVrUF0
それプログラムの話か?
489デフォルトの名無しさん (アウアウウー Saa3-KZVA [106.132.129.79])
垢版 |
2019/07/17(水) 18:03:20.99ID:YN7zKeiTa
>>487
わからない。一度アンインストールしてから新しいやつ自分でダウンロードしてインストールし直したら?
2019/07/17(水) 19:44:43.28ID:Dw6BLpSrx
>>487
アインストールして入れ直せばできたぞ
2019/07/18(木) 01:34:31.80ID:KhUYMYet0
>>489,490
ありがとう、公式からインストーラーダウンロードして手動でインストールしたら出来ました。
しかしインストール後 Javaコントロールパネル を覗いてみると 「アップデート」のタブがなくなっています。
「アップデート」のタブって消えたりするものでしたっけ?
2019/07/23(火) 12:11:44.39ID:J+ZHGa1Mr
初心者なんですが

ホームページ作るんですけどmysql使ってデータ入力して
そのデータを例えばプルダウンメニューからa-zの頭文字をクリックして引き出して表示させる、みたいな感じにしたいんですが
色々調べたらphp使った方がいいみたいな記事ばかりなんですが
javaだと難しいんでしょうか?
493デフォルトの名無しさん (ワッチョイ 6b02-tWJ1 [113.158.53.138])
垢版 |
2019/07/23(火) 12:23:47.74ID:zKHHLY/G0
javaを使える人が試しにphp使うとphpの楽さがわかる程度に楽なはず
odbcを難なく使えるならばjavaですんなり作れる腕のはず
2019/07/23(火) 12:25:49.33ID:pMPIgbDXM
難しいというかゴキブリを殺るのにショットガンを持ち出すようなもの
2019/07/23(火) 20:28:53.96ID:sDqE/UWhM
最近のGは殺虫剤耐性あるらしいから、確実性を狙うならあるいは…
2019/07/24(水) 02:44:47.37ID:S0ZgllDI0
凍らすやつ使いなさい
2019/07/25(木) 23:39:46.79ID:uj29tKpW0
eclipseいれたんですが、重すぎて全然動かなくて困りまして‥
軽くておすすめのIDEありますか?みなさんは何を使っているんでしょうか
2019/07/25(木) 23:52:41.82ID:uZl1AFvy0
NetBeansしか使ってないけど、ふつうに快適だお。
2019/07/25(木) 23:57:00.32ID:BYStTgyKa
今だとIntelliJかVSCodeだな
eclipseが重いならIntelliJも辛いかも
VSCodeは設定が少々面倒だが軽いしeclipseとかいうゲロ糞よりは遥かに使いやすい
2019/07/26(金) 00:00:45.33ID:4WOlvOyb0
俺もvscodeしか使わなくなってしまったけど、eclipseのリファクタ機能は神がかってたと思う
501デフォルトの名無しさん (ワッチョイ d5a3-+Thh [218.226.211.189])
垢版 |
2019/07/26(金) 10:42:10.57ID:FYq97nVK0
>>429
増分コンパイルされないから
2019/07/26(金) 11:09:47.00ID:bozmWfe6M
>>497
netbeans使ってるわ
動き自体は軽くて快適だよ
apacheに移って将来性良くわからんけどね
2019/07/27(土) 11:44:00.92ID:Ly9dgVjB0
5Gの時代だとJAVAの需要って増えるんでしょうか?
2019/07/27(土) 12:34:46.96ID:+u70Cj0O0
増えるよ
2019/07/27(土) 12:43:20.69ID:Ly9dgVjB0
オラクルすごいっすね
506デフォルトの名無しさん (オイコラミネオ MM11-CDeu [150.66.67.123])
垢版 |
2019/07/27(土) 23:34:08.27ID:gfq5vQssM
javaってなんでjavaって名になったんですか?
507デフォルトの名無しさん (ワッチョイ 3601-FpXu [111.90.8.52])
垢版 |
2019/07/27(土) 23:44:51.88ID:6Xw13KxI0
>>506
「私はJavaと命名しました」と当時のOak製品マネージャーであり、現在はMarimba
Inc.のCEOであるKim Polese氏は語ります「私は正確に正しい名前を付けたかった
ので、Javaの命名に多くの時間と労力を費やしました。 このプログラミング言語は非常
にユニークであるため、私はオタク的な名前を避けることにしました。 私は、かっこよ
く、ユニークで、そして綴りが簡単で、言えることが楽しい何かが欲しいと思いました。

「私はチームを部屋に集め、「ダイナミック」、「生きている」、「衝撃」、「衝撃的」
、「革命的」などの単語をホワイトボードに書いて、グループをブレインストーミングに
導いた」とPoleseは言った。 。 「このセッション中に[Java]という名前が登場し
ました。WebRunnerLanguage用のDNA、Silk、Ruby、WRLなどの他の名前には、
yuck!」

So why did they decide to call it Java? | JavaWorld
https://www.javaworld.com/article/2077265/so-why-did-they-decide-to-call-it-java-.html
508デフォルトの名無しさん (ワッチョイ a5ad-f/ht [42.145.105.241])
垢版 |
2019/07/28(日) 14:56:11.60ID:K7yfQMT20
通知バーのJAVAアイコンからインストールしようとするとかっこがありませんっていう構文エラーが出てきてうんともすんとも言わなくなるんだけど何なの?
509デフォルトの名無しさん (ワッチョイ a5ad-f/ht [42.145.105.241])
垢版 |
2019/07/28(日) 14:58:28.50ID:K7yfQMT20
>>487
よくみたらこれだわ
7でも10でも会社のPCでももれなく起きるわ
公式で何か言ってくれてたりしないのかな
510デフォルトの名無しさん (ワッチョイ d561-JDM+ [218.231.141.143])
垢版 |
2019/07/28(日) 18:28:52.54ID:FY1e9//S0
ライセンス変更になって、OTNに登録していないとDLできないようになったからじゃね?
どのみち、Java8を最後にJRE単体配布もなくなるし。
511デフォルトの名無しさん (ワッチョイ a5ad-f/ht [42.145.105.241])
垢版 |
2019/07/28(日) 18:35:57.14ID:K7yfQMT20
仮にそれだとして)がありませんエラーでタスクバーにアイコン表示させっぱなしにするという糞対応する?
2019/07/28(日) 23:05:49.68ID:6yOnmo+3M
java silverとるなら8と11どっちがいいんだろ?
2019/07/28(日) 23:13:42.22ID:fQf3JBTW0
お好きなように
2019/07/29(月) 08:45:19.65ID:f73BLAzPM
どっちも等しく意味はないからどっちでも
2019/07/29(月) 21:45:18.18ID:CSar0obtd
https://i.imgur.com/7ssVURS.jpg
516デフォルトの名無しさん (ワッチョイ b6da-9Rzn [223.218.251.239])
垢版 |
2019/07/29(月) 22:07:22.51ID:ah/mqMgZ0
>>515
グロ
517デフォルトの名無しさん (ワッチョイ f6a6-CDeu [119.240.124.4])
垢版 |
2019/07/30(火) 07:18:51.66ID:VrpHK0hY0
またウン○か!
518デフォルトの名無しさん (ワッチョイ e3ed-J+AI [61.203.126.217])
垢版 |
2019/08/14(水) 21:20:43.55ID:k4UWt8la0
mutex
2019/08/21(水) 16:15:25.16ID:0yVqkKpPM
public <T> T & Cloneable makeItCloneable(final T it) {
return (T & Cloneable) it;
}
みたいなことってどうやったらできるんですか?このソースコードだとマーカーアノテーションのくせにCCEが投げられるんですけど
520デフォルトの名無しさん (アウアウウー Sa2b-ZOU2 [106.132.128.168])
垢版 |
2019/08/21(水) 20:08:48.99ID:8NVHTeeBa
&?
521デフォルトの名無しさん (ワッチョイ 87ed-MlRc [122.135.18.167])
垢版 |
2019/08/27(火) 00:51:52.57ID:A4w3mNFW0
わらた
522デフォルトの名無しさん (ワッチョイ 87ed-MlRc [122.135.18.167])
垢版 |
2019/08/27(火) 00:52:40.01ID:A4w3mNFW0
Classってクラスにそんなメソッドあったかも、
2019/10/03(木) 14:17:38.96ID:FzwUXprsa
図書館で2007年出版の参考書借りてきたんですがまだ使えますか?
2019/10/03(木) 21:24:07.43ID:Y8ReZprUa
使ってみたらライブラリDLするところでリンク切れてて実行環境作れませんでした・・・出直してきます

環境変数とドキュメントの入手は成功したんですが古い参考書はダメですね
525デフォルトの名無しさん (ワッチョイ 1394-o6K/ [123.48.64.125])
垢版 |
2019/10/08(火) 00:59:42.36ID:pe44plco0
awtは今後もサポートされ続けるの?
打ち切りの話とか出てる?
526デフォルトの名無しさん (アウアウウー Sa9d-8Spd [106.132.135.144])
垢版 |
2019/10/08(火) 10:24:59.08ID:UHIrT7RMa
さあ?しかし swing のベースにもなっているので無くなれば swing ごと消滅になると思うよ。
527デフォルトの名無しさん (ワッチョイ 1394-o6K/ [123.48.64.125])
垢版 |
2019/10/08(火) 17:43:19.07ID:pe44plco0
Desktopクラスがawtだから
javaでURLを開いてデフォルトブラウザで開こうとしたらawt必須でしょ?
javafxにDesktopクラスに相当するものがないし
awtはGUIフレームワークというよりもっと広い範囲の機能を持ってしまってる
528デフォルトの名無しさん (アウアウウー Sa9d-8Spd [106.132.138.94])
垢版 |
2019/10/08(火) 21:06:48.90ID:gO+Oxfwra
ネイティブ環境との橋渡し的なものだな
529デフォルトの名無しさん (ワッチョイ 2302-6CKJ [125.52.64.191])
垢版 |
2019/10/11(金) 08:20:28.90ID:OWmYpcgG0
Javaの課題が大量に出たのですがメソッドがうまく理解できず全く進めません

厚かましいですが問題を解いて解説できる方がいらっしゃったらお願いします

https://i.imgur.com/JEjERTW.jpg
https://i.imgur.com/VPD27ce.jpg
2019/10/11(金) 08:26:49.78ID:Z7kWidgaM
>>529
どこまで自分でかけたのか晒してくれないと教える気にならん
531デフォルトの名無しさん (ワッチョイ 2302-6CKJ [125.52.64.191])
垢版 |
2019/10/11(金) 08:38:54.76ID:OWmYpcgG0
すみません、問題を間違えてました
こちらの問題です
かけたのはここまでです


https://i.imgur.com/Yz3kEf9.jpg

https://i.imgur.com/jmLjScb.jpg
2019/10/11(金) 09:29:43.97ID:R6n+lsqkr
メソッドの書き方自体は問題無いから中身だね
a % b == 0 のときaはbの倍数
これとfor文とif文を組み合わせてカウントして出力しよう
533デフォルトの名無しさん (ワッチョイ 2302-6CKJ [125.52.64.191])
垢版 |
2019/10/11(金) 09:40:24.96ID:OWmYpcgG0
ありがとうございます…!
やってみます!
534デフォルトの名無しさん (アウアウクー MMe1-mT29 [36.11.225.124])
垢版 |
2019/10/12(土) 02:36:24.75ID:w1B6WBqOM
とりまpc使おうず
2019/10/15(火) 22:14:15.26ID:d4ecUmga0
DateTimeFormatterについて教えて。

日付を月と日にフォーマットしたいのですが簡単な方法はありませんか?
システムの言語が日本語だったら10月15日で英語(US)だったらOctober 15などと表示したいです。
DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG).format(localDate)とすると
2019年10月15日となってしまって年が不要です。

JDK1.8でandroidアプリです。
2019/10/16(水) 11:46:30.44ID:WGPalTIjM
>>535
https://developer.android.com/reference/android/text/format/DateUtils.html?#formatDateTime(android.content.Context,%20long,%20int)
2019/10/17(木) 07:07:53.32ID:8j+Ah9oeM
ありがとう
簡単にできそうです
OSによって微妙に動作が違うっぽいけどいろいろ使えそう
538デフォルトの名無しさん (ワッチョイ 3f94-MZfN [123.48.64.125])
垢版 |
2019/10/25(金) 14:12:30.48ID:RuWUXZ3V0
javaとc#で総称型の実装が違うけど
javaのイレージャというのは実際どう思う?
実際書いてるとなんとかなるけど、総称型情報が実行時に取得できないというのは、
処理系の評価としてはどうなんだろうか?

つまりjavaは付け焼刃の中途半端な実装をしているんだろうか?
それともイレージャが理想なんだろうか?
539デフォルトの名無しさん (ワッチョイ 3f94-MZfN [123.48.64.125])
垢版 |
2019/10/25(金) 15:36:15.49ID:RuWUXZ3V0
SecurityManagerで動的にロードされたプログラムにポリシーを適用するという方法で
「動的にロードされたプログラムはこれらのパッケージ(またはメソッド)にのみアクセスしていい」
というような制限は実現できる?
540デフォルトの名無しさん (ワッチョイ 3f94-MZfN [123.48.64.125])
垢版 |
2019/10/25(金) 15:50:04.14ID:RuWUXZ3V0
AWTPermissionみたいないろんなパーミッションがあるけど
そもそもある動作がどんなパーミッションを必要とするか?をカスタマイズできるのかどうか。
自分の独自クラスが独自パーミッションを必要とする、という事は可能なのか?
2019/10/25(金) 21:18:19.60ID:XWvZhZOSM
>>540
可能
https://wiki.sei.cmu.edu/confluence/plugins/servlet/mobile?contentId=88487519#content/view/88487519
542デフォルトの名無しさん (ワッチョイ 3f94-MZfN [123.48.64.125])
垢版 |
2019/10/26(土) 08:22:00.87ID:eCInqrX90
そのページにSecurityManagerに関したことは何もないと思うが?
2019/10/26(土) 10:07:30.29ID:NCT+ojVgM
>>542
ハッシュの有無で表示されるページが変わる(5chはurl encode/decodeしてないからjumpページでハッシュが消費される)

デスクトップ版のURL
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?pageId=88487519
544デフォルトの名無しさん (ワッチョイ 3f94-MZfN [123.48.64.125])
垢版 |
2019/10/26(土) 11:01:22.96ID:eCInqrX90
おお、ありがとう。できるみたいだな。
2019/10/31(木) 11:55:26.14ID:uuxNXwwOd
今swingでアプリ作ってるんだけど
JButtonで別クラスの処理を呼び出してその進捗をJTextAreaとかに表示させたい場合は引数としてJTextAreaの変数を持たせるのでいいのかな?
2019/10/31(木) 11:56:19.01ID:uuxNXwwOd
すまん書き忘れた
一応動いてはいるけどこれが正しい手法なのか知りたい
2019/10/31(木) 14:42:41.53ID:ovdADILrM
>>545
Observerパターン使うかコールバック関数渡すかして進捗報告のタイミングでコールバックさせる
2019/11/02(土) 14:26:37.67ID:9S5zkDTmd
>>547
なるほどありがとう

あとずっと気になってたんだけど
時々コンストラクタじゃなくてそのクラスのstaticメソッド使ってインスタンスを初期化するようなクラスがあるけど
アレってどんな意味があるの?
2019/11/02(土) 22:26:37.87ID:UpyqzFZSM
>>548
Effective JavaのItem1なので
「"static factory method" "effective java"」で検索して解説を読むといいと思う
550デフォルトの名無しさん (ワッチョイ 575f-HgEL [106.72.163.96 [上級国民]])
垢版 |
2019/11/02(土) 22:43:41.51ID:qsr44g5y0
>>548
必ずコンストラクタで初期化するものなら、コンストラクタそのものがいらないことに気づかないのか?
551デフォルトの名無しさん (ワッチョイ 575f-HgEL [106.72.163.96 [上級国民]])
垢版 |
2019/11/02(土) 22:51:03.49ID:qsr44g5y0
間違った。コンストラクタで同じ初期化をされると都合が悪い場合だった。

コンストラクタは常に同じ初期状態を作るために存在しているので、初期状態を複数パターン持ちたい場合は、コンストラクタが邪魔になる。
2019/11/03(日) 06:15:26.16ID:Z7LNI9940
>>549
ありがとう
ちょっと内容紹介してるブログ読んだけどこの本わかりやすくていいな
553デフォルトの名無しさん (アウアウウー Sab7-a5T4 [106.132.122.50])
垢版 |
2019/11/03(日) 17:36:34.34ID:+YBSyx/ia
>>548
実装を隠したい時とかかな。
interface または abstrct クラスを公開して実装したクラスを非公開にして直接 new させない。
しかしどこかで new する必要があるので stasic メソッド作ってそこでやる。
2019/11/03(日) 20:17:58.07ID:Z7LNI9940
>>553
隠したいってのは知的財産的な意味で?
完全な趣味でやってるからその辺の事情となるとよくわかんないや
555デフォルトの名無しさん (ワッチョイ 3aad-LfSi [27.139.18.89])
垢版 |
2019/11/03(日) 21:18:47.91ID:ax9Okew10
>>554
例えばLocaleによって実装クラスを変えたい時とか。
556デフォルトの名無しさん (ワッチョイ 575f-HgEL [106.72.163.96 [上級国民]])
垢版 |
2019/11/03(日) 22:13:21.53ID:z6AvjLYh0
コンストラクタは初期化処理部分を明示するために存在しているブロックにすぎない。
557デフォルトの名無しさん (ワッチョイ 238f-6BDJ [118.7.1.66])
垢版 |
2019/11/06(水) 21:18:18.94ID:YMOIABpf0
以下の場合、オブジェクト指向で考えると、
何をクラスにし、何をメソッドにするのが良いのかを教えてください。

・商品の状態がテキストファイルに記録されていて、それをExcelへ一覧出力します。
 テキストには、商品ID、名前、製造日がスペース区切りで記録されていて、
 それら情報を毎日、Excelのセルへ入力する部分をjavaで実装します。
・本を読むと、Id、Name等を宣言して、Item.name等で名前を管理すべきかとも思います。
 (以下は文法上誤りですが雰囲気として書きます)

class Item{
public void Id()
public void Name()
public void date()
}

今は商品ID、名前、製造日を2次元配列に読み込ませて処理しています。
558デフォルトの名無しさん (ワッチョイ d601-9lYZ [111.90.14.57])
垢版 |
2019/11/06(水) 22:09:08.17ID:i1VxEute0
俺ならこうかな
・商品クラス
・テキストファイルから商品を読み込むクラス
・エクセルに商品を出力するクラス
559デフォルトの名無しさん (ワッチョイ 238f-x9nz [118.7.1.66])
垢版 |
2019/11/06(水) 22:19:59.95ID:YMOIABpf0
クラスは対象物テキストやエクセル()、
メソッドは動作(読み込みや書き出し)と言う風に作るという事ですか?
560デフォルトの名無しさん (ワッチョイ 238f-x9nz [118.7.1.66])
垢版 |
2019/11/06(水) 22:20:58.67ID:YMOIABpf0
書き間違えました。
----

クラスは対象物(テキストやエクセル)、
メソッドは動作(読み込みや書き出し)と言う風に作るという事ですか?
561デフォルトの名無しさん (ワッチョイ d601-9lYZ [111.90.14.57])
垢版 |
2019/11/06(水) 22:54:04.65ID:i1VxEute0
読み込みと書き込みは分けた方がテストしやすいだろうなってだけ
概念的なことは何も考えてない
562デフォルトの名無しさん (アウアウクー MMcb-qG8t [36.11.224.107])
垢版 |
2019/11/07(木) 15:31:41.64ID:Htm+xBrDM
その分け方はオブジェクト指向のクラス分けではなくモジュール分けにすぎないが否定はしない。
563デフォルトの名無しさん (アウウィフ FF5b-WuPA [106.171.65.44])
垢版 |
2019/11/07(木) 21:00:09.74ID:OX40Pd+4F
>557です
単に手続きを分けるだけなら考えついたのですが、
ちょっとオブジェクト指向ではないと思っています。

商品というオブジェクトをどう管理するのかが
肝だと思うんですが、言い分け方ないでしょうか。
2019/11/07(木) 21:58:56.04ID:UdwTKafpM
>>563
スペース区切りのデータをCSVにしてExcelで管理してる台帳に追記するだけだと理解したんだけど、もしそうなら商品をオブジェクトとして扱う価値はあんまりないよ

それ以上の処理かあるのかな? 例えば名前、製造日についてビジネスルールに沿ったバリデーションがあったり、DBに保存や専用のUIに表示したり、そういう値の中身を意識する必要のある処理
565デフォルトの名無しさん (ワッチョイ 178f-WuPA [118.7.1.66])
垢版 |
2019/11/07(木) 22:48:14.42ID:k1TXPQAL0
>>564
目的は自分がオブジェクト指向を理解する為です。
簡単な例で理解したいと思いまして。

プログラムをこれ以上修正する要件はありません。
2019/11/08(金) 07:26:56.73ID:98dXBVGk0
なるほど勉強用ね
商品と商品たちはそれぞれクラスにする
ItemクラスとItemListクラス
ただし一般的な用件ならjava.util.Listで十分なので商品たちはList<Item>とすればいい
JavaでOOPらしくしたいなら配列はまず使わない

ほかに思考のヒントとしては
ItemクラスとProductクラスを分けてhas-a関係にするとか
商品IDクラスや製造日クラスの導入を検討するなど
製造日クラスも実用上はjava.time.LocalDateあたりで十分
日付の類いをStringのまま取り回すのはやはりOOPらしくはない
2019/11/08(金) 12:59:41.86ID:DC2XQdtiM
>>565
オブジェクト指向でもそうじゃなくても、モデルが適切かどうかは、解こうとしてる問題に対しての有用性で判断するもの。

データに「商品」があるからとあってそれをクラスとしてモデリングすべきかどうかは、それが解こうとしてる問題に対して有用がどうかで判断する。

今回のケースではXXXReader、XXXWriter、XXXImporter、XXXConverterみたいなクラスから考えた方が適切。
568デフォルトの名無しさん (ワッチョイ 178f-WuPA [118.7.1.66])
垢版 |
2019/11/08(金) 16:27:50.10ID:yOhc3kk50
>>567
その場合、商品データはどうやって管理しますか?
2019/11/09(土) 10:53:42.88ID:3R32mnhiM
>>568
テキストファイル

Javaで書かなくてもをExcelのインポート機能でも似たようなこと出来るよね? Excelには商品クラス定義されてないにも関わらず。

テキストデータの各行を特定の型として捉えないと困るような処理(製造日を特定のルールで加工するとか商品マスタに登録されてないIDはエラーにするとか)がなければ、不必要に入力データの中身に依存せず、汎用的なスペース区切りのテキスト処理として考える。

各行の値に依存した処理が必要なら商品をクラスや構造体にして型として扱うがその場合でもXXXConverterのconvertメソッドのようなプログラムの大枠は変わらないからそっちから先に考えた方がいい。
570デフォルトの名無しさん (ワッチョイ 178f-WuPA [118.7.1.66])
垢版 |
2019/11/09(土) 17:55:14.88ID:rZdHNCVm0
あくまでも勉強用に小さなデータでクラス概念を理解しようとしているので、
Excelのデータ区切りは考えていません。

聞きたかったのは、テキストデータを読み込むとして
どのようにデータを保持するのかです。
単に配列に入れて管理ならもう作ってあります。

>566さんのやり方で1度作ってみます。
2019/11/09(土) 20:58:38.34ID:DEKDELV2M
>>570
Readerで読みつつWriterで書き出せばいいから、配列とかにデータを保持する必要ないよ

商品クラスから考えて作りたいならそれでやってみて試行錯誤から学べばいい
572デフォルトの名無しさん (アウアウウー Sa5b-WuPA [106.132.131.88])
垢版 |
2019/11/10(日) 10:36:56.34ID:wEe+Asgia
すみません。
大事なことを言い忘れてました。

商品のデータは1列に書かれていません。
商品名は必ず先頭にあるのですが、その情報は複数行にわかれて書かれています。
例えば、

商品A 重さ 型版
商品A 注文日
など。

しかも商品によって書き方はバラバラで、
唯一の規則性は商品名から必ず始まる事とスペース区切なことです。
商品の情報が何行に記述されるか、
一行に何個情報がスペース区切りされているかは、ランダムとしか言えません。
(本当は規則があるんでしょうけど・・・)

ということで、商品クラスを作って実装しました。
これは配列より暗黙的な部分が少なくていい感じです。

ありがとうございました。
非常に勉強になりました。
573デフォルトの名無しさん (ワッチョイ 9f94-E5K3 [123.48.64.125])
垢版 |
2019/11/10(日) 21:13:49.63ID:guOKKfCD0
moduleでパッケージAを非公開、パッケージBを公開、
パッケージBのクラスのAPIがパッケージAのクラスを返す、
とした場合に外部のプログラムはそのAPIを利用できますか?
574デフォルトの名無しさん (ワッチョイ 9f61-vPHs [61.245.59.179])
垢版 |
2019/11/12(火) 09:32:48.20ID:jtOqdKRJ0
そんなことできたら、moduleの意味が全くなくなる。
典型的なWrapperパターンの出番(ProxyとかAdapterをBに用意する)
2019/11/12(火) 10:37:47.46ID:QKLh6vCVr
インターフェイスを公開すればいいんじゃないの
576デフォルトの名無しさん (ワッチョイ 9f94-QzFo [123.48.64.125])
垢版 |
2019/11/12(火) 21:55:14.70ID:JzWcTGKB0
>>574
Wrapperクラスを使えば直接対象クラスにアクセスしないからmoduleの制約に引っかからないという事?

>>575
usesとかprovidesで指定されたインターフェースが非公開のクラスを返す場合、
あるいは公開されたクラスを返すとしても返値のクラスのgetterで非公開のクラスが返される場合、
アクセスできるんだろうか?できないんだろうけど。

インターフェースXが公開、実装Yが非公開の場合、YのオブジェクトをXとして使用する事はできるんだろうか?

というのは、良く連鎖的にクラスの依存関係が生じていくわけで、
moduleで外部プログラムとの連携をやろうとしたらほとんどの場合
大量のパッケージを公開設定しなきゃいけないんじゃないか?と。

moduleをうまく使うテクニックみたいなのはあるんだろうか。
例えば公開用インターフェースをまとめたクラスを作ってそれだけを公開するとか?
でも、そのインターフェースから非公開のクラスに辿れてしまったら機能しないんだよな。
577デフォルトの名無しさん (ワッチョイ 9702-QzFo [124.208.53.194])
垢版 |
2019/11/13(水) 19:53:24.72ID:UXUUsSoF0
JAVAの求人が多いと知り、
就職の為にJAVAを学ぼうと思うんですが、
本屋さんのプログラミング書籍の棚のJAVA本が充実しすぎて困ったぁ!
僕はどれを買えばいいんですかね?
2019/11/13(水) 20:06:36.56ID:ESFhNQze0
>>577
どれを買っても一緒だから独断と偏見で一冊買って最後まで読め
コンピューターサイエンスの本に関して一般的に言えることだが一冊でオールマイティな本なんて存在しないし存在し得ない
何冊か買っては読み買っては読みしていくうちに自ずから獲得するべき知識がわかってくるものだ

ひたすら精進あるのみ
2019/11/13(水) 22:06:42.16ID:PTDdhEKV0
Java と言えば、オブジェクト指向を学ぶ、歴史を変えた本!
スッキリわかる Java入門 第2版、2014

この本の大ヒットにより、革命が起きて、
あちこちへ、スッキリシリーズが浸透していった!

たのしいRuby 第6版、2019/3/19
未だに、プログラミング・オブジェクト指向を学ぶには、この2冊がベスト!

ただし、Java の就職は、建設業と同じで、5大SIer を頂点とした土方系!
1社経由するごとに、3割抜かれる!

貴族・奴隷、Waterfall 型、上流・下流の階級制度!
顧客は上流としか、契約を結ばない

一方、Ruby on Rails は、モダンな自社サービスWeb 系だから、抜かれない!
2019/11/13(水) 22:50:15.53ID:R4jPTy5Y0
ム板にいるとrubyがどんどん嫌いになる
581デフォルトの名無しさん (ワッチョイ 9702-Kn9a [124.208.53.194])
垢版 |
2019/11/13(水) 23:48:10.19ID:UXUUsSoF0
>>578
了解です!
今はあまり深く考えないでおきます
582デフォルトの名無しさん (ワッチョイ e361-Ks/Y [123.230.68.41])
垢版 |
2019/11/14(木) 10:57:04.52ID:gpjLruj80
>>576
exportされたクラスで、
public void X openMethod() {return new Y();}
public void Y openMethod() {return new Y();}
とした場合、
上は全くOK。
下は、client側で”import”しない限りはOK(コンパイルは通ってしまう)。
var変数への代入も可能。
けれどメンバーには一切アクセスできない(こっちはコンパイルエラー)。
export側でコンパイルエラーにならない理由はわからん。
583デフォルトの名無しさん (ワッチョイ e394-zGDE [123.48.64.125])
垢版 |
2019/11/14(木) 11:14:29.68ID:axmqwQma0
>>582
レスありがとう

じゃあリフレクションでYにアクセスする事はできないけどXとしてYを使用する事はできると。
JPMSはリフレクションでも非公開インターフェースにアクセスできないようにするのが売りだろうから。

リフレクションで任意のクラスにアクセスできないとなると
デバッガみたいなものが作りづらくなりそうだ。

JPMSはやはり納得しづらい感じがある
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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