プログラミング言語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/
探検
★★Java質問・相談スレッド180★★ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/04/21(金) 22:13:17.42ID:Sf0TFsly
2017/04/22(土) 16:37:21.68ID:Btp73K0S
2017/04/22(土) 16:37:52.20ID:Btp73K0S
アンカー一個ずれてた
2017/04/22(土) 16:43:46.75ID:Btp73K0S
>>11
追記
オブジェクト指向が少しだけわかったのだけどこのプログラムを組む際にどこで使ったらいいかも教えてほしいです
自分の中のオブジェクト指向はクラス(車だったり人間だったり)は皆とりあえず一律の動きができるっていうイメージ
しかいdealerもuserも一人ずつしかいないのだからオブジェクト指向にする必要があるのかなっていうのが今自分が抱いている疑問
追記
オブジェクト指向が少しだけわかったのだけどこのプログラムを組む際にどこで使ったらいいかも教えてほしいです
自分の中のオブジェクト指向はクラス(車だったり人間だったり)は皆とりあえず一律の動きができるっていうイメージ
しかいdealerもuserも一人ずつしかいないのだからオブジェクト指向にする必要があるのかなっていうのが今自分が抱いている疑問
2017/04/22(土) 16:52:28.64ID:+hjaOcO8
16デフォルトの名無しさん
2017/04/22(土) 16:58:43.59ID:hC7lZfMR プログラムは二進数!って言うけど滅多に使わないよな
フラグの指定くらいか?
フラグの指定くらいか?
2017/04/22(土) 17:00:16.20ID:+hjaOcO8
>>11
まずは java ブラックジャック ソースコード 辺りでググって適当なソースコードを見てみることをおすすめする
まずは java ブラックジャック ソースコード 辺りでググって適当なソースコードを見てみることをおすすめする
2017/04/22(土) 17:00:26.74ID:GSnrV4fZ
>>12
スレチなんだけど
スレチなんだけど
19デフォルトの名無しさん
2017/04/22(土) 21:53:37.80ID:XRNdcvpY >>14
・カードはクラスを作ってそのリストを使えばよい
・ランダムに引くのはシャッフルして削除すればよい
https://paiza.io/projects/XWSvPjzhnU1r4EpnG0l-gg
・カードはクラスを作ってそのリストを使えばよい
・ランダムに引くのはシャッフルして削除すればよい
https://paiza.io/projects/XWSvPjzhnU1r4EpnG0l-gg
2017/04/22(土) 22:17:18.25ID:x8LqAlRP
>>11-19
2次元配列[4][13]のようにはしない人が多い。
1次元配列[52]のようにする
その配列の要素には、カードクラスの参照を入れる。
そして、カードクラスには、便利なメソッドを追加する
2次元配列[4][13]のようにはしない人が多い。
1次元配列[52]のようにする
その配列の要素には、カードクラスの参照を入れる。
そして、カードクラスには、便利なメソッドを追加する
2017/04/23(日) 03:06:52.12ID:wQhD8zAd
>>14
自分で作ることを考えてみたらこんな感じ
もちろん人によってかなり変わると思うけど、どんなものがクラスになるのかのイメージにでも
bj パッケージ
Bootstrap ・・・ mainメソッド
bj.game パッケージ
Match ・・・ 1回分のゲームの管理
bj.cards パッケージ
Deck ・・・ 山札
Hands ・・・ 手札
bj.cards.cardパッケージ
Card ・・・ カード
Number ・・・ 数字
Suit ・・・ スート
bj.player パッケージ
Participant ・・・ 参加者(抽象クラス)
Dealer ・・・ ディーラー
Player ・・・ プレーヤー
bj.player.strategy パッケージ
PlayingStyle ・・・ カードをひく基準を決めるインタフェース
DealersStyle ・・・ ディーラーがカードをひく基準(17より小さければひく)
GenericStyle ・・・ 21より小さければカードをひく
RandomStyle ・・・ さいころふって偶数ならカードをひく
自分で作ることを考えてみたらこんな感じ
もちろん人によってかなり変わると思うけど、どんなものがクラスになるのかのイメージにでも
bj パッケージ
Bootstrap ・・・ mainメソッド
bj.game パッケージ
Match ・・・ 1回分のゲームの管理
bj.cards パッケージ
Deck ・・・ 山札
Hands ・・・ 手札
bj.cards.cardパッケージ
Card ・・・ カード
Number ・・・ 数字
Suit ・・・ スート
bj.player パッケージ
Participant ・・・ 参加者(抽象クラス)
Dealer ・・・ ディーラー
Player ・・・ プレーヤー
bj.player.strategy パッケージ
PlayingStyle ・・・ カードをひく基準を決めるインタフェース
DealersStyle ・・・ ディーラーがカードをひく基準(17より小さければひく)
GenericStyle ・・・ 21より小さければカードをひく
RandomStyle ・・・ さいころふって偶数ならカードをひく
22デフォルトの名無しさん
2017/04/23(日) 03:40:12.93ID:q6MqXCrn >>7
Javaで実際に整数計算するプログラム作って2進数で表示させてみればわかると思うよ。
Javaで実際に整数計算するプログラム作って2進数で表示させてみればわかると思うよ。
2017/04/23(日) 17:57:11.34ID:fsvPYIZO
2017/04/23(日) 18:04:31.15ID:fsvPYIZO
>>11
まずデッキとカードクラス作っていろいろ遊んでみればいいんじゃない
シャッフルするとか一枚引くとか
カードが一枚もないデッキから1枚引こうとして例外とか
次にそれらのクラスを利用するブラックジャッククラスを作るわけだが
前に作ったクラスは後に作ったクラスに依存しないように作るのがポイント
まずデッキとカードクラス作っていろいろ遊んでみればいいんじゃない
シャッフルするとか一枚引くとか
カードが一枚もないデッキから1枚引こうとして例外とか
次にそれらのクラスを利用するブラックジャッククラスを作るわけだが
前に作ったクラスは後に作ったクラスに依存しないように作るのがポイント
2017/04/24(月) 09:03:36.42ID:IVlW4HWK
出された課題通りにブラックジャックの作成をやってみてるのだが早速ここでエラーが出てきて困ってしまった
正直抽象クラスどころかオブジェクト指向の理解も危ういのだがテンプレートを使いながらの作成
配列を引数に持たせよといわれてなんのこっちゃって感じで課題を進めてみてるのだがとりあえず見てほしい
abstract class human{
abstract public void open();
abstract void setcard(int num[]);
abstract public void checksum();
int myCards;
}
class Dealer extends human{
int cards[]={1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13};
public void deal();
}
class User extends human{
}
アドバイス頼む、分からなくて困ってる
正直抽象クラスどころかオブジェクト指向の理解も危ういのだがテンプレートを使いながらの作成
配列を引数に持たせよといわれてなんのこっちゃって感じで課題を進めてみてるのだがとりあえず見てほしい
abstract class human{
abstract public void open();
abstract void setcard(int num[]);
abstract public void checksum();
int myCards;
}
class Dealer extends human{
int cards[]={1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13};
public void deal();
}
class User extends human{
}
アドバイス頼む、分からなくて困ってる
2017/04/24(月) 09:20:42.11ID:jdd5Ifgu
>>25
dealerクラスとuserクラスへabstractのメソッドを下記のように実装したらひとまずコンパイルできると思うよ
public void open(){}
void setcard(int num[]) {}
public void checksum() {}
dealerクラスとuserクラスへabstractのメソッドを下記のように実装したらひとまずコンパイルできると思うよ
public void open(){}
void setcard(int num[]) {}
public void checksum() {}
2017/04/24(月) 09:53:32.48ID:IVlW4HWK
2017/04/24(月) 20:38:20.66ID:tEKwtO57
エラーメッセージ読むか誰かに代わりにやってもらえ
2017/04/24(月) 21:23:53.16ID:MN8pW2Am
誰かにやってもらったら課題の意味がないよ
聞く分には調べ方を知るって点で意味あると思うけどね
聞く分には調べ方を知るって点で意味あると思うけどね
2017/04/28(金) 09:58:58.91ID:9cLmCsbT
jdk9.java.net がヒッソリと消えたな……
検索のURLはまだ変わってないのに 301 も返してないんだな
検索のURLはまだ変わってないのに 301 も返してないんだな
2017/04/28(金) 22:37:50.27ID:Tg7dk4qN
オラクルはわしが育てた
2017/04/29(土) 19:32:35.83ID:hcXxZ9K5
33デフォルトの名無しさん
2017/05/03(水) 16:56:58.73ID:vae9tRPy >>16 に浮動小数点数の計算で予期せぬ挙動に苦しむ呪いをかけた
34デフォルトの名無しさん
2017/05/03(水) 19:15:40.71ID:C3ziDNaA 不動小数点
2017/05/07(日) 12:40:48.26ID:dDS4IpMd
>>16
は2進数と2進表記を混同している
は2進数と2進表記を混同している
2017/05/07(日) 14:34:15.89ID:y87U8XUp
バイナリデータ扱う時に2進表記使ったな
2進表記使える前のバージョンで苦労した覚えがある
2進表記使える前のバージョンで苦労した覚えがある
37デフォルトの名無しさん
2017/05/07(日) 17:51:40.16ID:UtdAAWfL 0b とかアンダースコア入れられるとか知らなかった。Java7から使えるようになってたのか。
38デフォルトの名無しさん
2017/05/07(日) 17:53:01.73ID:UtdAAWfL でもprintfで2進文字列化ってできないよね?
こないだ探したけど見つからなかった。
こないだ探したけど見つからなかった。
2017/05/07(日) 22:29:55.36ID:pRE65r8H
フォーマット指定だと2進表記無いねtoBinaryString()するしかないのかな
40デフォルトの名無しさん
2017/05/07(日) 22:51:58.27ID:rIPClhkl フォーマットを %032s とかにしといて Integer.toBinaryString(x) かな。
41デフォルトの名無しさん
2017/05/07(日) 23:29:44.11ID:rIPClhkl sには0フラグだめだったんだな。面倒臭いな。
42デフォルトの名無しさん
2017/05/08(月) 00:27:35.94ID:BR8KVoK5 基数 radix が指定できる Integer.toString(i, radix) くらい知っとけ。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html#toString-int-int-
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Integer.html#toString-int-int-
43デフォルトの名無しさん
2017/05/08(月) 01:08:56.19ID:fEvZ8r+72017/05/08(月) 23:26:56.42ID:6xooNmVM
JavaでGUIのゲームを作ろうと思うんだけど
ゲームならGUIってJavaFXとswing、どっちを採用するのが良いかな
JavaFXの方が新しいけど、swingだと過去の遺産が多いっていう魅力があって……
ゲームならGUIってJavaFXとswing、どっちを採用するのが良いかな
JavaFXの方が新しいけど、swingだと過去の遺産が多いっていう魅力があって……
2017/05/08(月) 23:51:13.11ID:Nk7ReN6L
好きにすればよい
2017/05/08(月) 23:59:06.86ID:sBIUkarF
どっちにしろJavaを要求する時点で誰もやりたがらないからどうでもいい
君がマインクラフトを作れるなら別だけど、だとしてもわざわざハンデを負うメリットは何もないよ
君がマインクラフトを作れるなら別だけど、だとしてもわざわざハンデを負うメリットは何もないよ
2017/05/12(金) 15:24:40.31ID:tAeUMPRn
どうでもいい人がなんでスレを見張ってるのかよくわからんな
2017/05/12(金) 18:26:19.55ID:MJv8Zbqq
一般的なJavaやサーバーサイドの話ならともかく、GUIならほとんどのJava開発者にとっては実際どうでもいいと思うぞ
2017/05/21(日) 03:33:15.15ID:pRELyxti
kotlinってjavaより簡単なの?
2017/05/21(日) 08:14:58.50ID:mFXnnnZ/
KotlinはJavaを完全に理解している人がより生産性を高めるためのもの
2017/05/21(日) 12:59:43.02ID:ub1FGkoP
Windowsのコマンドプロントでabe backapからabファイル作成→abファイルをAndroid Backup Extractorを使ってtar変換する際に
exception in thread main java.lang.reflect.invocationtargetexception
以下いっぱい文字列
がでて、tarファイルは作成されるものの、ファイルサイズが220mから170mくらいまで減って上手く変換できてないようなのですが、ここで詳しいを質問してもよろしいでしょうか?
exception in thread main java.lang.reflect.invocationtargetexception
以下いっぱい文字列
がでて、tarファイルは作成されるものの、ファイルサイズが220mから170mくらいまで減って上手く変換できてないようなのですが、ここで詳しいを質問してもよろしいでしょうか?
2017/05/21(日) 15:14:15.31ID:Bojb/JCJ
スレチ
53デフォルトの名無しさん
2017/05/21(日) 15:27:48.48ID:ub1FGkoP2017/05/21(日) 16:34:24.78ID:pRELyxti
2017/05/21(日) 16:57:36.75ID:cW9lpmtQ
スレチ
2017/05/22(月) 12:16:33.23ID:p2FIawek
リスコフの置換原則は有名なの?
2017/05/22(月) 12:30:53.96ID:0jDVmNHt
Javaやってて知らんのなら素人と紙一重くらいだな
日本でJavaやってる奴の8割はそのレベルだけどね
日本でJavaやってる奴の8割はそのレベルだけどね
2017/05/22(月) 13:20:07.86ID:CoMSFMmc
てへへ
59デフォルトの名無しさん
2017/05/22(月) 13:51:56.90ID:X+l5vrxK コトリン(*´∀`*)ポッ
2017/05/22(月) 15:56:57.89ID:qzI8l5B/
2017/05/22(月) 16:10:52.16ID:c7gr/Kmx
単なるis-a関係でした
62デフォルトの名無しさん
2017/05/22(月) 18:05:40.08ID:ydRKGq7n リスコフの置換原則という単語は知らなかったけどis-aは常に意識してる
と言うか継承を滅多に使わない
と言うか継承を滅多に使わない
2017/05/22(月) 20:03:28.21ID:u/3sJfUA
使わないね
2017/05/22(月) 21:30:46.48ID:qzI8l5B/
Object継承しないの?
65デフォルトの名無しさん
2017/05/22(月) 22:16:49.63ID:ydRKGq7n2017/05/23(火) 00:32:52.20ID:Vjf5EXYM
androidだと、よく分からんが仕方なく継承するしかなくなる
まぁ機能を使う以上、そこまで親子関係おかしい訳ではないが
まぁ機能を使う以上、そこまで親子関係おかしい訳ではないが
2017/05/23(火) 00:43:15.71ID:ksVXUe+Q
androidとJavaの区別がつかない奴
2017/05/23(火) 06:42:38.05ID:E2aa/Wgw
69デフォルトの名無しさん
2017/05/23(火) 09:29:01.10ID:oLMKx381 Javaの場合は何もしなくてもObjectが継承されていることはみんなには内緒にしておこう。
2017/05/23(火) 14:58:41.09ID:+VZhYDLB
継承を使わないっつうのはそういうことじゃないだろアホ
得意気に馬鹿晒してなにがしたいんだか
得意気に馬鹿晒してなにがしたいんだか
71デフォルトの名無しさん
2017/05/23(火) 15:41:36.98ID:oLMKx381 キリッ
2017/05/23(火) 16:01:22.50ID:UVgxThtR
Objectクラスのメソッドについてリスコフの置換原則守ってるなら間違ってない
73デフォルトの名無しさん
2017/05/23(火) 16:53:24.23ID:A5t1zfLR >>69
それは知ってるけど、それをわざわざ「継承する」とは普通言わないやろJK
それは知ってるけど、それをわざわざ「継承する」とは普通言わないやろJK
2017/05/23(火) 17:49:28.86ID:+VZhYDLB
俺はJava書くときは必ずObjectを継承するようにしてる
2017/05/23(火) 19:00:05.47ID:TGelZbxI
>>74
なんでや?
なんでや?
76デフォルトの名無しさん
2017/05/23(火) 20:54:01.87ID:mYQ+ynVM >>73
言う。
言う。
77デフォルトの名無しさん
2017/05/23(火) 21:00:29.01ID:RzWtz9Yc 言わないコンテキストと
言うコンテキストがあるわけだから
お互いのコンテキストをぶつけて消滅させて
人類が滅びれば地球に平和が訪れます
それが真のユートピア
言うコンテキストがあるわけだから
お互いのコンテキストをぶつけて消滅させて
人類が滅びれば地球に平和が訪れます
それが真のユートピア
78デフォルトの名無しさん
2017/05/23(火) 21:00:52.63ID:RzWtz9Yc 地球平和のためのオブジェクト指向
79デフォルトの名無しさん
2017/05/23(火) 21:29:33.07ID:A5t1zfLR >>76
文脈考えような
文脈考えような
80デフォルトの名無しさん
2017/05/23(火) 23:45:40.00ID:hoEPyhx6 >>79
あほか
あほか
2017/05/23(火) 23:49:02.19ID:u7xU/vNF
どうでもいい
82デフォルトの名無しさん
2017/05/23(火) 23:55:26.23ID:A5t1zfLR83デフォルトの名無しさん
2017/05/23(火) 23:56:04.61ID:A5t1zfLR いちいち「暗黙的なObjectクラスの継承以外の継承はあまり使わない」って書けって事か?
2017/05/24(水) 03:20:49.95ID:SSLM/4UF
2017/05/24(水) 03:21:57.53ID:SSLM/4UF
文脈を無視していきなり関係ない話をしだしたっていうならまだしも
2017/05/24(水) 07:02:11.95ID:8osOo0xF
>>84
おかしいのは文脈が違うからだという事に気付かないと。何かアスペっぽいよ君。
おかしいのは文脈が違うからだという事に気付かないと。何かアスペっぽいよ君。
2017/05/24(水) 07:18:15.41ID:SSLM/4UF
88デフォルトの名無しさん
2017/05/24(水) 07:21:05.75ID:sXHe3Xzk >>87
いきなりObject
いきなりObject
89デフォルトの名無しさん
2017/05/24(水) 07:25:08.22ID:sXHe3Xzk 相手が言ってることがおかしいと思ったら
相手の前提と自分の前提が違うんじゃないかと思わないと
自分の前提で相手の発言を解釈して相手がおかしいと
いうのは簡単だけど、それって会話が噛み合ってないだけだよね
たしかにJavaのすべてのクラスはObjectを継承するけれども
その意味での継承と、自分はあまり継承を使いませんというときの継承は
概念が異なることに気付けると思うし気づくべきだと思う
相手の前提と自分の前提が違うんじゃないかと思わないと
自分の前提で相手の発言を解釈して相手がおかしいと
いうのは簡単だけど、それって会話が噛み合ってないだけだよね
たしかにJavaのすべてのクラスはObjectを継承するけれども
その意味での継承と、自分はあまり継承を使いませんというときの継承は
概念が異なることに気付けると思うし気づくべきだと思う
90デフォルトの名無しさん
2017/05/24(水) 07:35:37.60ID:sXHe3Xzk 言葉が同じだから同じことを話しているんだと思うのが危なくて
言葉は同じでも概念が異なることがある
自分の概念を相手が言うことに当てはめておかしかったら置換可能でないということ
継承してはいけないものを継承してる
これがリスコフの置換原則
言葉は同じでも概念が異なることがある
自分の概念を相手が言うことに当てはめておかしかったら置換可能でないということ
継承してはいけないものを継承してる
これがリスコフの置換原則
2017/05/24(水) 09:20:49.63ID:IXUmJ/sE
Effective Javaが名著だと聞いて読んでみたことがある
継承より委譲を使うこと、と書いてあって、すぐにクソ本だと見抜いたよ
Objectを継承しないオブジェクトは存在しないが、委譲は必ずしも必須ではない
そんなこともわからない著者が書いた本をありがたがってるんだから、世間のJavaプログラマのレベルなんてお察し
継承より委譲を使うこと、と書いてあって、すぐにクソ本だと見抜いたよ
Objectを継承しないオブジェクトは存在しないが、委譲は必ずしも必須ではない
そんなこともわからない著者が書いた本をありがたがってるんだから、世間のJavaプログラマのレベルなんてお察し
2017/05/24(水) 09:25:04.61ID:rgjqqiZm
2017/05/24(水) 11:52:04.86ID:RPJTgULc
どの言語でも「Effective 何々」という本は、プロ必須本。
ここまで読めば、ひとまず上司に聞きながら、仕事ができるレベル
これ以上のレベルの本は「メタプログラミング 何々」という本。
これは、ライブラリ・言語実装者向けの本
最近の本では、委譲を勧める方が多い。
Web開発を想定して、委譲の方が柔軟性があるから
それに委譲は、コンポーネントの疎結合にも使える
オブザーバー、発行・購読
中央管制塔ありのメディエイター
メッセージキュー
ここまで読めば、ひとまず上司に聞きながら、仕事ができるレベル
これ以上のレベルの本は「メタプログラミング 何々」という本。
これは、ライブラリ・言語実装者向けの本
最近の本では、委譲を勧める方が多い。
Web開発を想定して、委譲の方が柔軟性があるから
それに委譲は、コンポーネントの疎結合にも使える
オブザーバー、発行・購読
中央管制塔ありのメディエイター
メッセージキュー
2017/05/24(水) 12:10:05.97ID:MizSfTrk
2017/05/24(水) 12:16:41.24ID:MnuqeZiD
2017/05/24(水) 14:14:28.08ID:SSLM/4UF
>>89
自分で気づいて欲しくて遠まわしに言ったんだがな
Javaでは必ず継承してるからリスコフの置換原則は必ず付きまとう
と言うか継承を滅多に使わないとは間違いで上書きしてないだけでメソッドはそのまま継承されてる
そのまま継承しただけではクラスの意味合いによって置換原則に従わないこともある
例えば数値を表すインスタンスのequalsとかそうじゃないか常識的には
new Counter(5).equals(new Counter(5))?
自分で気づいて欲しくて遠まわしに言ったんだがな
Javaでは必ず継承してるからリスコフの置換原則は必ず付きまとう
と言うか継承を滅多に使わないとは間違いで上書きしてないだけでメソッドはそのまま継承されてる
そのまま継承しただけではクラスの意味合いによって置換原則に従わないこともある
例えば数値を表すインスタンスのequalsとかそうじゃないか常識的には
new Counter(5).equals(new Counter(5))?
2017/05/24(水) 15:36:11.63ID:IgpnYvX1
「お察し」を使うのは厨二
2017/05/26(金) 07:24:33.27ID:Mhihnqx0
2017/05/26(金) 17:40:11.27ID:ynJbt3tr
>>98
なぜ反するか、継承すると適切に機能しなくなるかの説明できますか?
なぜ反するか、継承すると適切に機能しなくなるかの説明できますか?
100デフォルトの名無しさん
2017/05/26(金) 17:52:50.28ID:GQTsiFFs 偉そうなやつがきたぞ
101デフォルトの名無しさん
2017/05/26(金) 22:26:51.23ID:/9nVrKkw >>99
Counter x = new Counter(1);
Counter y = new CounterEx(1, 2);
x.equals(y); //置換原則に従い、型を無視して1番目の値のみを比較するとtrue
y.equals(x); //2番目の値も比較してfalse
これはequalsの対称性を破っている
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.18ID:/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の推移性を破っている
対称性を満たすように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.01ID:NnuCoMWV java 9 リリース遅れそうな気配だけど、
java 8 のサポート延長されないのかな。
http://www.oracle.com/technetwork/jp/java/eol-135779.html
java 8 のサポート延長されないのかな。
http://www.oracle.com/technetwork/jp/java/eol-135779.html
104デフォルトの名無しさん
2017/05/27(土) 09:00:27.31ID:H5DLR0HB105デフォルトの名無しさん
2017/05/28(日) 03:51:45.91ID:lcWhcyEB 質問させてください
メソッドaとbを持つ親クラスがあり、メソッドaは内部で自身のメソッドbを呼んでいるとします
次に親クラスを継承した子クラスを用意し、メソッドaとbの両方をオーバーライドし、メソッドaではsuperで親のaメソッドを呼んでいるとします
この時、子クラスのメソッドaを呼ぶと親と子どちらのbメソッドが実行されるのでしょうか?
メソッドaとbを持つ親クラスがあり、メソッドaは内部で自身のメソッドbを呼んでいるとします
次に親クラスを継承した子クラスを用意し、メソッドaとbの両方をオーバーライドし、メソッドaではsuperで親のaメソッドを呼んでいるとします
この時、子クラスのメソッドaを呼ぶと親と子どちらのbメソッドが実行されるのでしょうか?
106デフォルトの名無しさん
2017/05/28(日) 07:55:31.10ID:1h0Zdjgx >>105
子
子
107デフォルトの名無しさん
2017/05/28(日) 09:51:29.08ID:22uH3DrM108デフォルトの名無しさん
2017/05/28(日) 11:43:31.44ID:lcWhcyEB109デフォルトの名無しさん
2017/05/28(日) 12:15:32.64ID:KZ/JXw9A Javaでは伝統的にあんまりその辺ガチガチに作らないことが多い
継承はなるべくオープンであるべき!スーパークラスが壊れる?そんなのサブクラスの責任でしょ?っていう考原理主義的な考え方がまだ色濃く残っている
C#なんかだとオーバーライドさせたいところだけprotectedな仮想メソッドとして切り出しておいて
それ以外のオーバーライドは一切認めない、みたいなガッチガチな設計をするのが一般的なんだけど
継承はなるべくオープンであるべき!スーパークラスが壊れる?そんなのサブクラスの責任でしょ?っていう考原理主義的な考え方がまだ色濃く残っている
C#なんかだとオーバーライドさせたいところだけprotectedな仮想メソッドとして切り出しておいて
それ以外のオーバーライドは一切認めない、みたいなガッチガチな設計をするのが一般的なんだけど
110デフォルトの名無しさん
2017/05/28(日) 12:38:13.92ID:5K6OvT18 上書きされたくないならメソッドに final つけときゃいいんじゃねーの?
111デフォルトの名無しさん
2017/05/28(日) 13:22:14.80ID:KZ/JXw9A Javaでメソッドに軒並みfinal付けると、
上から目線でオブジェクト指向を理解していない馬鹿呼ばわりする奴がいるからなあ
上から目線でオブジェクト指向を理解していない馬鹿呼ばわりする奴がいるからなあ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】日本代表MF 中村敬斗 ボリビア戦のスーパーゴールに「惚れるわ」「痺れる程のゴールこれでご飯何杯いけるのよ」 [阿弥陀ヶ峰★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- 自閉症が「んなっしょい」と連呼するお🏡
- 日本人の海外旅行したきのマナーよくなったのはいつから
- へそグリグリ
- 結婚しないやつは異性は嫌いなの?
