2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

★★Java質問・相談スレッド180★★ [無断転載禁止]©2ch.net

1 :デフォルトの名無しさん:2017/04/21(金) 22:13:17.42 ID:Sf0TFsly
プログラミング言語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質問・相談スレッド179★★
http://echo.2ch.net/test/read.cgi/tech/1476706523/

78 :デフォルトの名無しさん:2017/05/23(火) 21:00:52.63 ID:RzWtz9Yc
地球平和のためのオブジェクト指向

79 :デフォルトの名無しさん:2017/05/23(火) 21:29:33.07 ID:A5t1zfLR
>>76
文脈考えような

80 :デフォルトの名無しさん:2017/05/23(火) 23:45:40.00 ID:hoEPyhx6
>>79
あほか

81 :デフォルトの名無しさん:2017/05/23(火) 23:49:02.19 ID:u7xU/vNF
どうでもいい

82 :デフォルトの名無しさん:2017/05/23(火) 23:55:26.23 ID:A5t1zfLR
>>80
常識的に考えて「継承はあまり使わない」って言ったら暗黙的なObject継承は除くやろ
Object継承含んだら、継承率100%になるやん
アスペかよ

83 :デフォルトの名無しさん:2017/05/23(火) 23:56:04.61 ID:A5t1zfLR
いちいち「暗黙的なObjectクラスの継承以外の継承はあまり使わない」って書けって事か?

84 :デフォルトの名無しさん:2017/05/24(水) 03:20:49.95 ID:SSLM/4UF
>>82
暗黙の継承だろうとリスコフの置換原則の対象だから>>62がおかしい

85 :デフォルトの名無しさん:2017/05/24(水) 03:21:57.53 ID:SSLM/4UF
文脈を無視していきなり関係ない話をしだしたっていうならまだしも

86 :デフォルトの名無しさん:2017/05/24(水) 07:02:11.95 ID:8osOo0xF
>>84
おかしいのは文脈が違うからだという事に気付かないと。何かアスペっぽいよ君。

87 :デフォルトの名無しさん:2017/05/24(水) 07:18:15.41 ID:SSLM/4UF
>>86
いきなり関係ない話したのか
そういう時はわかるように言おうなアスペ君

88 :デフォルトの名無しさん:2017/05/24(水) 07:21:05.75 ID:sXHe3Xzk
>>87
いきなりObject

89 :デフォルトの名無しさん:2017/05/24(水) 07:25:08.22 ID:sXHe3Xzk
相手が言ってることがおかしいと思ったら
相手の前提と自分の前提が違うんじゃないかと思わないと
自分の前提で相手の発言を解釈して相手がおかしいと
いうのは簡単だけど、それって会話が噛み合ってないだけだよね

たしかにJavaのすべてのクラスはObjectを継承するけれども
その意味での継承と、自分はあまり継承を使いませんというときの継承は
概念が異なることに気付けると思うし気づくべきだと思う

90 :デフォルトの名無しさん:2017/05/24(水) 07:35:37.60 ID:sXHe3Xzk
言葉が同じだから同じことを話しているんだと思うのが危なくて
言葉は同じでも概念が異なることがある

自分の概念を相手が言うことに当てはめておかしかったら置換可能でないということ
継承してはいけないものを継承してる

これがリスコフの置換原則

91 :デフォルトの名無しさん:2017/05/24(水) 09:20:49.63 ID:IXUmJ/sE
Effective Javaが名著だと聞いて読んでみたことがある
継承より委譲を使うこと、と書いてあって、すぐにクソ本だと見抜いたよ
Objectを継承しないオブジェクトは存在しないが、委譲は必ずしも必須ではない
そんなこともわからない著者が書いた本をありがたがってるんだから、世間のJavaプログラマのレベルなんてお察し

92 :デフォルトの名無しさん:2017/05/24(水) 09:25:04.61 ID:rgjqqiZm
>>91
中身ちゃんと読んでない事丸分かりでワロタ
なぜ名著と言われてるか分からん頭なのに、なぜ自信満々なのか本当に理解できん

93 :デフォルトの名無しさん:2017/05/24(水) 11:52:04.86 ID:RPJTgULc
どの言語でも「Effective 何々」という本は、プロ必須本。
ここまで読めば、ひとまず上司に聞きながら、仕事ができるレベル

これ以上のレベルの本は「メタプログラミング 何々」という本。
これは、ライブラリ・言語実装者向けの本

最近の本では、委譲を勧める方が多い。
Web開発を想定して、委譲の方が柔軟性があるから

それに委譲は、コンポーネントの疎結合にも使える

オブザーバー、発行・購読
中央管制塔ありのメディエイター
メッセージキュー

94 :デフォルトの名無しさん:2017/05/24(水) 12:10:05.97 ID:MizSfTrk
>>91
それは見抜いたんじゃない
理解できず諦めたって言うんだ

95 :デフォルトの名無しさん:2017/05/24(水) 12:16:41.24 ID:MnuqeZiD
>>93
君のレスは、癖があって、すぐわかる。
内容も、いつも、的外れ。

96 :デフォルトの名無しさん:2017/05/24(水) 14:14:28.08 ID:SSLM/4UF
>>89
自分で気づいて欲しくて遠まわしに言ったんだがな
Javaでは必ず継承してるからリスコフの置換原則は必ず付きまとう
と言うか継承を滅多に使わないとは間違いで上書きしてないだけでメソッドはそのまま継承されてる
そのまま継承しただけではクラスの意味合いによって置換原則に従わないこともある
例えば数値を表すインスタンスのequalsとかそうじゃないか常識的には
new Counter(5).equals(new Counter(5))?

97 :デフォルトの名無しさん:2017/05/24(水) 15:36:11.63 ID:IgpnYvX1
「お察し」を使うのは厨二

98 :デフォルトの名無しさん:2017/05/26(金) 07:24:33.27 ID:Mhihnqx0
>>96
自分で分かってないの丸出しだな
equalsは置換原則に反する典型的なメソッドなので例としては最悪
Counterを継承すると適切に機能しなくなる

99 :デフォルトの名無しさん:2017/05/26(金) 17:40:11.27 ID:ynJbt3tr
>>98
なぜ反するか、継承すると適切に機能しなくなるかの説明できますか?

100 :デフォルトの名無しさん:2017/05/26(金) 17:52:50.28 ID:GQTsiFFs
偉そうなやつがきたぞ

101 :デフォルトの名無しさん:2017/05/26(金) 22:26:51.23 ID:/9nVrKkw
>>99
Counter x = new Counter(1);
Counter y = new CounterEx(1, 2);
x.equals(y); //置換原則に従い、型を無視して1番目の値のみを比較するとtrue
y.equals(x); //2番目の値も比較してfalse
これはequalsの対称性を破っている

102 :デフォルトの名無しさん:2017/05/26(金) 22:47:17.18 ID:/9nVrKkw
補足
対称性を満たすようにCounterEx#equalsの実装を変更しても仕様違反が生じる
Counter x = new Counter(1);
Counter y = new CounterEx(1, 2);
x.equals(y); //置換原則に従い、型を無視して1番目の値のみを比較するとtrue
y.equals(x); //相手がCounterの場合は x.equals(y) の値を返すように実装を変更してtrue
Counter z = new CounterEx(1, 3);
y.equals(z); //当然false
z.equals(x); //y.equals(x)の場合と同じくtrue
これは x = y かつ z = x なら y = z というequalsの推移性を破っている

103 :デフォルトの名無しさん:2017/05/26(金) 22:55:34.01 ID:NnuCoMWV
java 9 リリース遅れそうな気配だけど、
java 8 のサポート延長されないのかな。
http://www.oracle.com/technetwork/jp/java/eol-135779.html

104 :デフォルトの名無しさん:2017/05/27(土) 09:00:27.31 ID:H5DLR0HB
>>101
お前がリスコフの置換原則を守れないことはわかった。
もう二度とプログラム書くなよ。

105 :デフォルトの名無しさん:2017/05/28(日) 03:51:45.91 ID:lcWhcyEB
質問させてください
メソッドaとbを持つ親クラスがあり、メソッドaは内部で自身のメソッドbを呼んでいるとします
次に親クラスを継承した子クラスを用意し、メソッドaとbの両方をオーバーライドし、メソッドaではsuperで親のaメソッドを呼んでいるとします

この時、子クラスのメソッドaを呼ぶと親と子どちらのbメソッドが実行されるのでしょうか?

106 :デフォルトの名無しさん:2017/05/28(日) 07:55:31.10 ID:1h0Zdjgx
>>105


107 :デフォルトの名無しさん:2017/05/28(日) 09:51:29.08 ID:22uH3DrM
>>105
そういう意図せず呼び出し先が書き換えられてしまうトラブルがあるから、
オーバーライドを許すメソッドは極力制限するのが基本

108 :デフォルトの名無しさん:2017/05/28(日) 11:43:31.44 ID:lcWhcyEB
>>106,107
ありがとうございました
書き換えられてしまうんですね。ちょっと設計見直してみます

109 :デフォルトの名無しさん:2017/05/28(日) 12:15:32.64 ID:KZ/JXw9A
Javaでは伝統的にあんまりその辺ガチガチに作らないことが多い
継承はなるべくオープンであるべき!スーパークラスが壊れる?そんなのサブクラスの責任でしょ?っていう考原理主義的な考え方がまだ色濃く残っている
C#なんかだとオーバーライドさせたいところだけprotectedな仮想メソッドとして切り出しておいて
それ以外のオーバーライドは一切認めない、みたいなガッチガチな設計をするのが一般的なんだけど

110 :デフォルトの名無しさん:2017/05/28(日) 12:38:13.92 ID:5K6OvT18
上書きされたくないならメソッドに final つけときゃいいんじゃねーの?

111 :デフォルトの名無しさん:2017/05/28(日) 13:22:14.80 ID:KZ/JXw9A
Javaでメソッドに軒並みfinal付けると、
上から目線でオブジェクト指向を理解していない馬鹿呼ばわりする奴がいるからなあ

112 :デフォルトの名無しさん:2017/05/28(日) 14:05:04.96 ID:7TA+N736
>>111
別にバカが何を言っても関係なくね?

113 :デフォルトの名無しさん:2017/05/28(日) 15:15:34.03 ID:fRR4LI9a
インターフェース

114 :デフォルトの名無しさん:2017/05/28(日) 15:33:19.93 ID:TqBbmupp
初心者なんだけど、
スカイプとかって、なんという言語で作られてるの?

115 :デフォルトの名無しさん:2017/05/28(日) 15:54:23.33 ID:LqX4nhhl
C++だろう
MSだからスマホ版はC#に移行してるかもしれないけど

116 :デフォルトの名無しさん:2017/05/28(日) 16:51:28.22 ID:fRR4LI9a
スレチ

117 :デフォルトの名無しさん:2017/05/28(日) 21:32:06.13 ID:QPUrPhGM
>>109
Javaは継承したクラスが別物にしてしまうことを想定してないからな。

形だけ継承して中身を書き換えられるからタチが悪い。

118 :デフォルトの名無しさん:2017/05/28(日) 21:34:09.27 ID:QPUrPhGM
>>114
高度なWindowsアプリならWindows SDKの可能性が高い。

119 :デフォルトの名無しさん:2017/05/28(日) 22:33:09.13 ID:A2iCvXLz
言語言うてるやろ

120 :デフォルトの名無しさん:2017/05/28(日) 22:39:20.62 ID:pJKpSkwh
スレチ言うてるやろ

121 :デフォルトの名無しさん:2017/05/28(日) 22:47:21.05 ID:oCI88hgR
めんどくせえからVBでテキトーに作っただけだったりしてな

122 :デフォルトの名無しさん:2017/05/28(日) 23:06:34.69 ID:QPUrPhGM
>>119
Windows SDKならCかC++なんだよ。知らないなら調べてもの言えよ

123 :デフォルトの名無しさん:2017/05/29(月) 00:12:45.97 ID:3p3NlSCk
>>122
スレタイ100回声に出して読んでから来いや

124 :デフォルトの名無しさん:2017/05/29(月) 00:58:20.59 ID:3z87Obs+
>>123
読んできました。

125 :デフォルトの名無しさん:2017/06/03(土) 09:33:06.11 ID:os85wqX+
ゴスリンがAmazonに入社したらしいね
もうAmazonがJava買ってくれよ

126 :デフォルトの名無しさん:2017/06/03(土) 16:40:49.89 ID:6+8tZLqC
尼にメリットがない

127 :デフォルトの名無しさん:2017/06/03(土) 19:56:05.44 ID:wtE6TEU1
Googleみたいなウェーイ系の延長と違ってAmazonはエンタープライズITに対してわりと理解があるし
Java開発のAWSへの取り込みを加速させるには悪くないんじゃないかな

32 KB
新着レスの表示

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)