[解決済み] clone() のアクセスは保護されています - public Object clone() を作成しました。
2022-02-09 19:43:17
質問
オブジェクトを作成し、そのオブジェクトをクローンして、その2つを比較するコードを書いています。
問題のオブジェクトであるOctagonは、GeometricObjectというオブジェクトを拡張したものである。
public class Octagon extends GeometricObject implements Comparable<Octagon>, Cloneable {
private double side;
public Octagon (double side){
this.side = side;
}
public Object clone() throws CloneNotSupportedException {
Octagon octClone = (Octagon)super.clone();
return octClone;
}
Octagon.javaという名前のファイルに
別のTestOctagon.javaに、私のメインメソッドがあります。
public class TestOctagon {
public static void main(String[] args) {
GeometricObject test = new Octagon(5); //create an Octagon with a side of 5
System.out.println("Area is: "+test.getArea());
System.out.println("Perimeter is: "+test.getPerimeter());
Octagon copy = (Octagon)test.clone();
}
}
mainメソッドの最終行でエラーが発生します。
clone() has protected access in Object
Octagaonのcloneメソッドの名前をclonemeに変えてみましたが、そうするとエラーが発生します。
cannot find symbol
symbol: method cloneme()
location: variable test of type GeometricObject
この問題は、Octagonが別のオブジェクトを拡張しているからではないかという気がするのですが、どうでしょう?
私は本当に解決策を見つけることができず、ここで他のすべてのclone()の投稿を読んで、かなりの時間を費やしました。
編集部:cloneを使うことが必須です。一般的なコンセンサスはcloneがダメだということですが、私はそう思っています。
解決方法は?
交換する
Octagon copy = (Octagon)test.clone();
と
Octagon copy = (Octagon)((Octagon)test).clone();
で、呼び出されたクローンメソッドが自分のクラスのものであるようにします。
関連
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】Android java.lang.IllegalStateException: Android java.lang.IllegalStateException: Could not execute method of the activity
-
[解決済み】Android Studioでタスク :app:compileDebugJavaWithJavac の実行に失敗しました。
-
[解決済み] メソッドがそのスーパークラスのメソッドをオーバーライドしない
-
[解決済み】Javaを包含するクラスではないのか?
-
[解決済み】Java Error "Exception in thread "main" java.util.InputMismatchException" Array プログラムで発生。
-
[解決済み】Javaのswitch文。定数式が必要だが、定数である
-
[解決済み】Javaの未処理例外について
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Hibernateエラー:同じ識別子値を持つ別のオブジェクトがすでにセッションに関連付けられました。
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み] 二項演算子「&」のオペランド型がおかしい java
-
[解決済み] 解決済み】Javaが「型をインスタンス化できない」というエラーを返す [重複] [重複]
-
[解決済み] メソッドがスーパータイプのメソッドをオーバーライドまたは実装していない - Overrideの場合
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】「java -cp」と「java -jar」の違い?
-
[解決済み】Eclipseで「公開型 <<classname>> は独自のファイルで定義する必要があります」エラー【重複あり
-
[解決済み】Hibernateの例外「failed to lazily initialize a collection of role」の解決方法
-
[解決済み】Java: GZIPInputStreamの作成に失敗しました。GZIP形式ではありません