[解決済み] スーパークラスの中からサブクラスの名前を取得する
2023-06-03 19:26:38
質問
という名前の基底クラスがあるとします。
Entity
. このクラスには、クラス名を取得するための静的メソッドがあります。
class Entity {
public static String getClass() {
return Entity.class.getClass();
}
}
今度はそれを拡張した別のクラスがあります。
class User extends Entity {
}
Userのクラス名を取得したい。
System.out.println(User.getClass());
私の目標は "com.packagename.User" がコンソールに出力されることですが、代わりに "com.packagename.Entity" が出力されることになります。なぜなら Entity クラスが静的メソッドから直接参照されているからです。
もしこれが静的メソッドでなければ、これは簡単に
this
キーワードを使うことで簡単に解決できます。
Entity
クラス(つまり
return this.class.getClass()
). しかし、私はこのメソッドが静的なままである必要があります。 これにアプローチする方法について何か提案はありますか?
どのように解決するのですか?
不可能です。静的メソッドはどのような方法でもランタイムポリモーフィックではありません。これらのケースを区別することは絶対に不可能です。
System.out.println(Entity.getClass());
System.out.println(User.getClass());
これらは同じバイトコードにコンパイルされます(メソッドが
Entity
).
それに、このメソッドがポリモーフィックであることに意味を見出すような呼び方はどうでしょうか?
関連
-
[解決済み] super() は、新しいスタイルのクラスに対して "TypeError: must be type, not classobj" を送出する。
-
Junitのユニットテストはjava.lang.Testを報告します。
-
List list = new ArrayList(); Error: ArrayList は型に解決できません。
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
[解決済み] ファイルの内容からJavaの文字列を作成するにはどうすればよいですか?
-
[解決済み] Javaクラスにおけるcanonical name、simple name、class nameの違いは何ですか?
-
[解決済み] Pythonで子クラスから親クラスのメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] GsonでList<T>オブジェクトをデシリアライズする?
-
[解決済み] Pythonでスーパーコンストラクタを呼び出すには?
-
[解決済み] Javaで静的メソッドからgetClass()を呼び出す方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スレッド "main "での例外 java.util.NoSuchElementException in Java 問題解決済み
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
スレッド "main" での例外 java.lang.ArrayIndexOutOfBoundsException:5 エラー
-
無効な文字定数
-
java マイクロソフト払い戻し予期せぬサーバーからのファイルの終了
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
Java の double データ型における 0.0 と -0.0 の問題
-
switch case文のcaseの後の列挙定数は列挙型なし
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.