X



★★Java質問・相談スレッド184★★

0001デフォルトの名無しさん (ブーイモ MMff-liuG)
垢版 |
2021/09/19(日) 11:52:45.82ID:DdTXq5RcM
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    https://itest.5ch.net/subback/hp
Webプログラミング https://itest.5ch.net/subback/php
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 (p)ttp://www.wikiroom.com/java/?path,classpath
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※

質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。

前スレ
★★Java質問・相談スレッド183★★
https://mevius.5ch.net/test/read.cgi/tech/1588770728/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0003デフォルトの名無しさん (アウアウウー Saa9-npZ5)
垢版 |
2021/11/15(月) 01:09:30.48ID:/rcxh/Pca
Oracleの無料JDKダウンロードサイトが真っ白です
どうにかしてください
0004デフォルトの名無しさん (アウアウキー Sac7-zUxy)
垢版 |
2021/11/23(火) 14:40:53.16ID:HIAOM8SHa
あそこは真っ白になったり現れたりを繰り返しているようだ。
時間を空けてまた見てみると良い。
0005デフォルトの名無しさん (ワッチョイ a936-Amx7)
垢版 |
2022/01/18(火) 21:32:25.56ID:a+6fnuAs0
JMHの@Paramはなんで文字列で指定するの?
@Param({"1","2"})
int size;

intに対しても文字列。なんで?

あと
@Param({"1",...,"2"})
こういう...の記法は何を意味してる?
0009おれいいひと (ワッチョイ b15f-R4TS)
垢版 |
2022/07/24(日) 21:13:03.59ID:AdzGFJsY0
JAVA初心者でもBASICのように簡単にプログラミングできる方法を開発しました
switch(GOTO){
case 10:処理;break;
case 20:処理;break;
case 30:処理;break;
}
これでBASICで便利だった行番号とGOTO文が使えます
なおこのコードはフリー素材として誰でも使えるようにします
恥ずかしがらず活用してください
0010デフォルトの名無しさん (ワッチョイ 13ad-SXL5)
垢版 |
2022/07/24(日) 21:27:36.13ID:9ixHhHoi0
恥ずかしくて使えません。
0012デフォルトの名無しさん (JP 0Hfa-9R4+)
垢版 |
2022/07/31(日) 07:36:55.64ID:bPMJUnCNH
「e(fx)clipse3.8.0」をEclipseのマーケットプレイスからインストールしました。
エクリプスで、ウィザード→javaFx→javaFx Projectを選択して、JREは[JavaSE-16]を使用してプロジェクト作成すると、
自動生成されたコードですでにThe import javafx cannot be resolvedが発生してます。
そのため、上記プロジェクトのビルドパスの[Oder and Export]のタブでJavaFx SDKにチェックと入れてみたしたが同じエラーがでます。
どうすればいいでしょうか?
0013デフォルトの名無しさん (ワッチョイ 419c-h75T)
垢版 |
2022/07/31(日) 09:44:17.27ID:RDvy3I9r0
e(fx)clipseプラグインって開発止まってるでしょ
JavaFX開発するならIntelliJ IDEAのほうがいいと思う
Web開発しないなら無料のコミュニティエディションで十分だし
0014デフォルトの名無しさん (ワッチョイ f15f-G1eK)
垢版 |
2022/07/31(日) 17:38:30.45ID:Dl7jaJ3a0
javaファイルをフォルダーに入れて
それに単純にアクセスする方法はないでしょうか?
importを使えば何とかアクセスできるんですが
もっと単純にHTMLみたいな感じでアクセスしたくてたまりません
それにimportだと同一クラス名が使えてしまうのでまぎらわしいです

Folder/Class fc = new Folder/Class();

みたいな感じでやりたいんですがもちろんこのコードは通りません
助けてください
0015デフォルトの名無しさん (ワッチョイ f15f-G1eK)
垢版 |
2022/07/31(日) 17:57:27.73ID:Dl7jaJ3a0
>>14
すいません自己解決しました

Folder/Class fc = new Folder/Class();

ではなく

Folder.Class fc = new Folder.Class();

とすればよかったみたいです
0016デフォルトの名無しさん (ワイーワ2 FF62-gOJn)
垢版 |
2022/08/02(火) 10:59:10.67ID:tTeCFCYlF
エンターキーをJbutton上において押下したときでも、ボタンのアクションを呼び出したいのですが、
どうしたらいいでしょうか?
KeyListenerをimplementsして、下記のようにしたのですが、
JButton okButton = new JButton("OK");
okButton.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
System.out.println("エンター");
}
}
});
エラーが出ます。
The method addKeyListener(KeyListener) in the type Component is not applicable for the arguments (new KeyAdapter(){})
0017デフォルトの名無しさん (ワッチョイ ce01-ApZl)
垢版 |
2022/08/02(火) 11:09:03.96ID:1+SKzGdY0
>>16
import java.awt.event.KeyAdapter;
0018デフォルトの名無しさん (ワイーワ2 FF62-gOJn)
垢版 |
2022/08/02(火) 12:04:38.33ID:tTeCFCYlF
ありがとうございます!
インポートが足りなかったのですね。

因みに、エンターキーが押下された場合に、既にある
okButton.addActionListener(new ActionListener() {..処理..}
を実行するためにokButton.addActionListeneを呼べたりできるんでしょうか?
イメージ的には
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
okButton.getAction().actionPerform();
}
です。
0019デフォルトの名無しさん (ワッチョイ ce01-ApZl)
垢版 |
2022/08/02(火) 12:41:49.87ID:1+SKzGdY0
アクションリスナが実行されるのはアクションが起きたときなので
okButton.doClick();
でいんじゃないかな

Stream.of(okButton.getActionListeners())
.forEach(x -> x.actionPerformed(null));

これで呼べなくはないだろうけど
これをやるならActionListenerで行ってる処理を別メソッドに移動して
そのメソッドをActionListener, KeyListenerの双方から呼ぶようにするのが正当なやり方だと思う
0020デフォルトの名無しさん (スフッ Sd9a-iNeV)
垢版 |
2022/08/02(火) 13:47:01.98ID:X1lFHMABd
教えて頂いた方法をそれぞれ試してみようと思います。
色々勉強になりました。ありがとうございます!
0023デフォルトの名無しさん (テテンテンテン MMee-gOJn)
垢版 |
2022/08/04(木) 19:52:36.56ID:nBHWCjI9M
なんでFXCollections.observableArrayListのところでエラーが出るんでしょう?
ttps://pastebin.com/qxC6PKaY
0025デフォルトの名無しさん (テテンテンテン MMee-gOJn)
垢版 |
2022/08/04(木) 20:30:11.89ID:nBHWCjI9M
>>24
ホントだ。newしてた。orz
ありがとうございます。
0026デフォルトの名無しさん (ワッチョイ d690-Og+R)
垢版 |
2022/08/04(木) 22:13:11.15ID:RbD+Gsia0
漏れが登録していたJava のサーバーから、パスワードを抜き取られましたとか、
Microsoft かブラウザから、通知が来た

大きなセキュリティーホールがあったけど、
ほったらかしで、それを修正していないサーバーも多い
0027デフォルトの名無しさん (ワッチョイ f15f-H9lt)
垢版 |
2022/08/04(木) 22:18:36.71ID:isEYuHXY0
0029デフォルトの名無しさん (ワッチョイ 895f-9Xv3)
垢版 |
2022/08/09(火) 18:10:17.56ID:8SEJB7nO0
変数名を変えたいんですが、100個以上あるので万道臭いです。
なんか1発で買える方法とかありませんか?
0030デフォルトの名無しさん (ワッチョイ 1b01-Rzrk)
垢版 |
2022/08/09(火) 18:26:16.78ID:KAEQzIc+0
EclipseならShift + Alt + R
0031デフォルトの名無しさん (ワッチョイ 13ad-N11w)
垢版 |
2022/08/11(木) 15:40:23.64ID:/k5aJ7yS0
>>21
簡単と感じるかどうかは主観の問題。君から見て複雑で難しいものであっても簡単と感じる人はこの世のどこかに居るかも知れない。
0032デフォルトの名無しさん (アウアウウー Sa55-LItA)
垢版 |
2022/08/12(金) 07:17:46.90ID:wOxqptDPa
>>12
JREがOpenjdk系だとjavaFX統合版、JREとjavaFX別モジュール版とある
もしかしてJREのみのインストールしとらん?
0033デフォルトの名無しさん (ブーイモ MM85-7aqZ)
垢版 |
2022/08/12(金) 07:44:55.17ID:dDX14IC1M
しとらん。
0034デフォルトの名無しさん (ワッチョイ e5fc-5Ix7)
垢版 |
2022/08/14(日) 13:45:10.64ID:XjrQ4lVV0
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/geysermc/geyser/platform/standalone/GeyserStandaloneBootstrap has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:756)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:601)
0037デフォルトの名無しさん (ワッチョイ 4601-Xm2N)
垢版 |
2022/08/14(日) 14:27:05.88ID:XqwoDURi0
>>34
Java16でコンパイルされたクラスをJava8で実行しようとしていてそれはダメですよってエラー
0039デフォルトの名無しさん (スッップ Sd9f-xUjg)
垢版 |
2022/08/20(土) 23:31:17.02ID:VubPJjDRd
Spring Batch

chunkの使い方わからん
0040デフォルトの名無しさん (ワッチョイ 1f5f-dbST)
垢版 |
2022/08/25(木) 10:41:03.30ID:C0Bmt3UL0
真剣に悩んでいます
floatのもっと簡単な使い方を教えて下さい

float baka=5.963; とするとエラーが出ます
float baka=5.963f; とfをつければエラーは消えますが、いちいちつけるのが面倒です

例えば大量に数値を打ち込むときにfをつけてたら大変でしかたありません
何とかfをつけない方法はないでしょうか?
doubleを使えというのはなしでお願いします

もう3日もやり方を模索して見つからずほとんど寝ていません
切実です
0041デフォルトの名無しさん (ワッチョイ ff01-CDiL)
垢版 |
2022/08/25(木) 10:42:07.10ID:0z7AphVM0
ないです、寝てください
0043デフォルトの名無しさん (JP 0H8f-XvCx)
垢版 |
2022/08/25(木) 15:33:45.50ID:bJn+zm7RH
>>40
どうしても嫌だという場合は例えばファイルに文字列で入れておいて初期化時にファイルから読んで変換するとか、
文字列の配列でプログラム中に埋め込んでおいて初期化する時にまとめて float の配列に変換するとか、
そんな風にするしかないんじゃないかなあ?

入力が大変というぐらい沢山あるのであればやっぱファイルに入れておくのが良いのでは?
後で変更する時にプログラム修正しなくて済むよ。設定ファイルのようなもの。
0044デフォルトの名無しさん (ワッチョイ 8601-nIs0)
垢版 |
2022/08/30(火) 10:32:40.70ID:mEZdOQXT0
>>39
コミット間隔を指定するだけっしょ
データが大量にあるときに便利
0045デフォルトの名無しさん (スップ Sd82-JVFl)
垢版 |
2022/09/02(金) 13:30:13.77ID:anBQQFEld
ブックマークレットのスレッドかこちらか悩みましたが質問なのでこちらでご相談させていただきます。

他者のWebサイトを閲覧する際、JavaScriptを用いて作成されている場合、リンクを新しいタブで開けない場面があります。
頻繁にページを進んだり戻ったりする場面、可能であればリンク先を別タブで開くようにしたいです。
ブックマークレットを用いて、現在ページのJavaScriptのリンクを別タブで開くように書き換える処理をすることは可能でしょうか?
0049デフォルトの名無しさん (ワッチョイ 1610-sDLX)
垢版 |
2022/09/24(土) 01:53:59.87ID:a10GtK4h0
自作のオブジェクトをツリー構造で管理したいのですが出来合いのクラスでおすすめはありますでしょうか
親ノードから直下の子ノードに順次アクセスしたり、最下位のノードからルートまで階層をさかのぼって情報収集したり、子を親から切り離してツリー構造ごと別のノードの子として移動させたりしたいです
swing の JTree の中で使っている DefaultMutableTreeNode のユーザーオブジェクトに自前のオブジェクトを入れるのが現在の候補ですが他にいいのがあれば知りたいです
格納するユーザーデータにジェネリックスが使えればベストです
0050デフォルトの名無しさん (ワッチョイ de01-AWP/)
垢版 |
2022/09/24(土) 14:58:01.38ID:rovpnI4n0
>>49
GUIのコンポネントを探してるん?
0052デフォルトの名無しさん (ワッチョイ de01-AWP/)
垢版 |
2022/09/24(土) 19:26:33.34ID:rovpnI4n0
標準ライブラリにはないね
ディレクトリ構造のような多分木でしょ
自作するのがいんじゃないかな

AWSのS3のような感じでパスをキーにした連想配列を木構造とみなすこともできそうだけどね
0054デフォルトの名無しさん (ワッチョイ 12ad-r4yT)
垢版 |
2022/09/25(日) 01:30:08.90ID:gLZKJWEk0
どう考えてもダメなのでは?
0056デフォルトの名無しさん (ワッチョイ 5f01-JEMU)
垢版 |
2022/09/25(日) 09:06:07.14ID:Rxhh3DJ90
統一教会に聞いてみてはどうかな。
色々教えてくれるんじゃないかと。
0057デフォルトの名無しさん (ワッチョイ 5f01-JEMU)
垢版 |
2022/09/25(日) 09:08:46.47ID:Rxhh3DJ90
まず自民党支部で紹介状をもらってから家庭教会(韓国籍の方は高位なので同胞教会)に行けば親身になって相談に乗ってくれます。
0060デフォルトの名無しさん (ワッチョイ de01-AWP/)
垢版 |
2022/09/25(日) 19:21:42.78ID:MGeEAc5V0
( -`ω-) ぇ? 俺のコードそんなに良い?
0061デフォルトの名無しさん (ワッチョイ 1610-tX/F)
垢版 |
2022/09/26(月) 23:23:05.13ID:TiY0P+H/0
>>55
コードサンプルまでありがとうございます
残念ながらほしいのとは違いました

ちょっと機能あり過ぎて使いこなせるか不安ですが自前で作るよりはずっと良さそうなので
javax.swing.tree.DefaultMutableTreeNode
を使うことにします。

(ごめんなさい初心者質問スレがあったのですね
次からはそちらにします)
0063デフォルトの名無しさん (ワッチョイ 5f01-JEMU)
垢版 |
2022/09/27(火) 07:22:17.35ID:wINisv8A0
霊感商法の被害にあってる人が大勢いるのに、国葬とは、何を考えているのか。
0064デフォルトの名無しさん (ワッチョイ de01-AWP/)
垢版 |
2022/09/27(火) 12:10:00.10ID:kUtc7fRq0
>>62
あってるよ!
0065デフォルトの名無しさん (ワッチョイ 8f53-kW3g)
垢版 |
2022/09/27(火) 15:07:37.96ID:79bVniqk0
>>64
ありがとうございます
0067デフォルトの名無しさん (ワッチョイ 3601-Q2FJ)
垢版 |
2022/11/05(土) 10:53:07.37ID:ik3uUvNv0
やってみればわかる
0069デフォルトの名無しさん (アウアウウー Sa3b-stRS)
垢版 |
2022/11/23(水) 14:46:39.94ID:Zy3T79XVa
↓知ってる人いたら教えてくだされ
"ABC".replaceAll(".*", "DEF")
ってやると結果が"DEFDEF"ってなる

テキストエディタとかだと単純にDEFに変換されるだけなんだけど
javaだと正規表現の".*"が""(ブランク)と"DEF"の2回マッチしてるみたいなんだ
これってjavaだと当たり前の動作なのかな?

ちなみに、
"".replaceAll(".*", "DEF")
ってやると"DEF"になることから
最初のやつは"ブランク"部分と文字列部分の2回ヒットしているんじゃないかと推測してる
0070デフォルトの名無しさん (ワッチョイ 4ead-+H9L)
垢版 |
2022/11/23(水) 17:25:46.90ID:gB3NJ+gJ0
ほんとだ、変な動作
0071デフォルトの名無しさん (ワッチョイ 4ead-+H9L)
垢版 |
2022/11/23(水) 17:29:48.55ID:gB3NJ+gJ0
サクラエディタの正規表現も同じ動作だったわ
0072デフォルトの名無しさん (ワッチョイ 4ead-+H9L)
垢版 |
2022/11/23(水) 17:42:26.87ID:gB3NJ+gJ0
"AAA".replaceAll("(.*)", "($1)")
これが
(AAA)()
こうなった

末尾の空文字列とマッチしてるっぽい
0073デフォルトの名無しさん (テテンテンテン MM8e-U8jK)
垢版 |
2022/11/23(水) 18:04:13.61ID:VU/69mxiM
変な動作だけど多分それで正しい
任意の一文字とそれの0回以上の繰り返し -> ABC にマッチ
.* で0文字にもマッチ -> 末尾のnullにマッチ
で2回マッチするっぽい
PCREとかJavaScriptとかも同様の動作をするよ
正直、".*$" でも2回マッチするのは納得できないけどw

for (String regex: new String[]{".*", "^.*", ".*$"}) {
var matcher = Pattern.compile(regex).matcher("ABC");
System.out.println(matcher);
matcher.results().forEach(mr -> System.out.println(mr.group()));
}
0079デフォルトの名無しさん (テテンテンテン MM8f-jpzT)
垢版 |
2022/12/15(木) 22:19:40.44ID:vw4fefRqM
JFrameのボダンを押下して表示したダイアログボックスから画像を選択し、その選択した画像上でマウスをクリックしながらドラッグした範囲に四角形を描画したいとおもっているのですが、四角形が描画されません。
何かおかしいでしょうか?
ttps://pastebin.com/XEHpQkrL
0082デフォルトの名無しさん (ワッチョイ ea55-ZR1D)
垢版 |
2022/12/21(水) 18:21:53.74ID:RdDYZJi/0
『良いコード/悪いコードで学ぶ設計入門』という本がJavaを使って、
オブジェクト指向プログラミングの説明をしているのですが、非常に
わかりやすくて勉強になっています。

このような本は他にないでしょうか?
0083デフォルトの名無しさん (ワッチョイ 3b01-ZR1D)
垢版 |
2022/12/21(水) 18:58:11.74ID:ye8WaQKn0
本じゃないけど、boostのソースはためになるな。
0084デフォルトの名無しさん (ワッチョイ ea55-ZR1D)
垢版 |
2022/12/21(水) 19:52:26.30ID:RdDYZJi/0
>>83
ありがとうございます。
ソースコードはハードルが高いです。
0085デフォルトの名無しさん (ワッチョイ ea55-ZR1D)
垢版 |
2022/12/22(木) 10:24:08.92ID:tmbBFS3W0
class A {
■■int m1() {
■■■■return 100;
■■}
■■int m2() {
■■■■return 200;
■■}
}

class B extends A {
@Override
■■int m1() {
■■■■return super.m1() + 20;
■■}
■■int m2() {
■■■■return super.m2() + 10;
■■}
}
0086デフォルトの名無しさん (ワッチョイ ea55-ZR1D)
垢版 |
2022/12/22(木) 10:26:05.26ID:tmbBFS3W0
class A {
■■int m1() {
■■■■return 100;
■■}
■■int m2() {
■■■■return m1();
■■}
}

class B extends A {
@Override
■■int m1() {
■■■■return super.m1() + 20;
■■}
■■int m2() {
■■■■return super.m2() + 10;
■■}
}
0087デフォルトの名無しさん (ワッチョイ ea55-ZR1D)
垢版 |
2022/12/22(木) 10:34:49.73ID:tmbBFS3W0
>>86
訂正します:

class A {
■■int m1() {
■■■■return 100;
■■}
■■int m2() {
■■■■return 2 * m1();
■■}
}

class B extends A {
@Override
■■int m1() {
■■■■return super.m1() + 20;
■■}
■■int m2() {
■■■■return super.m2() + 10;
■■}
}
0088デフォルトの名無しさん (ワッチョイ ea55-ZR1D)
垢版 |
2022/12/22(木) 10:35:00.31ID:tmbBFS3W0
>>85
のように親クラス A を変更した場合、クラス B の m2 メソッドを実行すると、
250 がリターンされると本に書いてあります。
A の変更前は、 210 が返されていたので、リターンされる値が変わってしまったことになります。

A の変更後、このあたりの仕組み、ルールがよく分かりません。

B の m2() を実行すると、 A の m2() のリターン結果に 10 足した値がリターンされる。
A の m2() が実行されると、 B の m1() のリターン結果を2倍した値がリターンされる。

ようですが、どういうルールに従っている結果でしょうか?
0089デフォルトの名無しさん (ワッチョイ ea55-ZR1D)
垢版 |
2022/12/22(木) 10:36:14.86ID:tmbBFS3W0
訂正します:
>>87
のように親クラス A を変更した場合、クラス B の m2 メソッドを実行すると、
250 がリターンされると本に書いてあります。
A の変更前は、 210 が返されていたので、リターンされる値が変わってしまったことになります。

A の変更後、このあたりの仕組み、ルールがよく分かりません。

B の m2() を実行すると、 A の m2() のリターン結果に 10 足した値がリターンされる。
A の m2() が実行されると、 B の m1() のリターン結果を2倍した値がリターンされる。

ようですが、どういうルールに従っている結果でしょうか?
0090デフォルトの名無しさん (テテンテンテン MMe6-WNmf)
垢版 |
2022/12/22(木) 12:07:43.69ID:syRoAR41M
各メソッドを
int m1() { // class A
System.out.println("A.m1()");
return 100;
}
の様にして、実行してみれば一目瞭然
System.out.println(new A().m2());
->
A.m2()
A.m1()
200

System.out.println(new B().m2());
->
B.m2()
A.m2()
B.m1()
A.m1()
250
0091デフォルトの名無しさん (テテンテンテン MMe6-WNmf)
垢版 |
2022/12/22(木) 12:25:33.69ID:syRoAR41M
まあ少し分かりにくいんだけど、
クラスBのインスタンスを生成してメソッドB.m2()からクラスAのメソッドA.m2()が"super.method名()"で呼ばれたとして、
その時、クラスAのメソッド(A.m2())中でもthisはやっぱり、当然に、クラスBのインスタンスのままなんですよ(勝手にインスタンスが生まれ変わったりはしない)
で、クラスBのインスタンスに対してm1()呼び出しをするので、B.m1()が呼ばれます

先ほどの様に、各メソッドに
System.out.println(this.getClass().getName());
でも追加してみればわかるかと
0094デフォルトの名無しさん (ワッチョイ 3bad-s0Sd)
垢版 |
2022/12/25(日) 21:24:32.33ID:fbG5Klx70
>>92にはこれは無理だな
0096デフォルトの名無しさん (アウアウウー Sa1f-MkkF)
垢版 |
2022/12/25(日) 23:40:35.90ID:8AzSKsIAa
>>87
B.m2() を呼ぶと、super で、A.m2()が呼ばれる

この時、this が、B インスタンスから、
その中のA インスタンス部分を指すように変わる

だから、A.m2()を呼ぶと、
B.m1()ではなく、A.m1()が呼ばれる
0099デフォルトの名無しさん (ワッチョイ cf9c-azuO)
垢版 |
2022/12/26(月) 08:09:56.37ID:aUjbdkr90
そういえば某大手SIerのコーディング規約で「親クラスのメソッドを呼ぶときはsuperを明示すること」ってあったなあ
メソッド定義が自クラスでは親クラスに書かれていることが分かりやすくなるとかなんとか

案の定、子クラスでメソッドをオーバーライドしても呼ばれないというトラブルが続発した

本当に親クラスのメソッド呼び出しに固定したいとき以外は super 書かないほうがいいね
0101デフォルトの名無しさん (ワッチョイ cf9c-azuO)
垢版 |
2022/12/26(月) 13:59:53.17ID:aUjbdkr90
>>100
親クラスのメソッドを使いたいわけではない
開発初期に子クラスでオーバーライドしない場合は super を付けろという規約だった

当然、後から子クラスでオーバーライドしなければならないような変更が発生することもある
そうなったときに、super を明示するという規約が仇になったという話
レスを投稿する