質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

4回答

2548閲覧

addメソッドを宣言してインスタンスを追加する方法

nana155

総合スコア1

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2021/06/04 12:11

あるクラスにほかのクラスのインスタンスを追加するためにaddメソッドを宣言したいのですが、どうすればいいのか分かりません。
add(e)の形で可能でしょうか…?

教えていただきたく思います????‍♀️

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hallen0225

2021/06/04 12:13

「あるクラスにほかのクラスのインスタンスを追加」というのが具体的にどういうことが教えていただけますでしょうか…?? クラスA、クラスBがあるとして、クラスBのインスタンスを元に、(何らかのルールで)クラスAのインスタンスを生成したい、という可能性は思いつきましたが想像の域を出ませんので。
nana155

2021/06/04 12:27

説明不足、申し訳ありません。 クラスAのインスタンスを複数保持するクラスBを宣言して、クラスBにクラスAのインスタンスを追加するべくaddメソッドを宣言したいということです。ややこしい書き方してしまいすみません????
hallen0225

2021/06/04 12:31 編集

クラスA、クラスBは具体的にどのようなクラスですか?あと、「クラスBにクラスAのインスタンスを追加」というのがどういうことなのか結局分かりません。 「インスタンスを追加」という用語が世の中に(恐らく)ないので、具体的にこのクラスのaddメソッドと同じようなことを自作のクラスでやりたい、くらいの説明はないと分からないかと思います。
hallen0225

2021/06/04 12:37 編集

あと、ここでいうクラスBがどういうものか、僕の想像が合っていればですが、そういうものって、自分で作らずとも、「配列」「リスト」「マップ」とか色々あると思うのですが。。 Javaに最初からあるものを自分で作るのはそれこそ百害あって一利なしなので、既存のもので具体的にどういう問題点があるのか明らかにされた方がよいのかと思います。(学校かどこかでそういう課題が出たのでしたら、課題の内容を明らかにしてください)
m.ts10806

2021/06/04 13:01

質問は編集できます。 文章説明ではなく実際のコードか、最小限要件を確認できるコードを改めて組んで提示してください。
guest

回答4

0

質問でいろいろやりとりされていますが、

  • クラスAのメンバに、クラスBの配列を持つ。
  • A.add(b) でその配列に指定されたクラスBのインスタンスbを追加する。

のようにすればいいでしょう。削除するものや、情報を取得するものなどいろいろ考えられますね。

こういう実装はよくあるものだと思いますよ。

投稿2021/06/04 14:17

TakaiY

総合スコア13790

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hallen0225

2021/06/04 14:58

それは結局のところListインターフェイス(およびその実装クラス)の再発明ではないのでしょうか? そのようなことを避けるべき、という観点でお話をしています。
TakaiY

2021/06/05 15:06

メンバとして複数のオブジェクトのインスタンスを持つような実装は普通に存在するし、単なるリストでは実現できない機能を持たせることもできるでしょう。
hallen0225

2021/06/05 15:08

そうですね、「単なるリストでは実現できない機能」が必要かどうかは質問文では分かりませんが、それが必要ならばそうでしょう。 質問文を見る限り、単にインスタンスの集合体が必要なようにしか見えませんでしたが。
guest

0

おそらく、仕様に因ると思いますよ。

単純に保持したいだけならList<T> を使えばいいし、

仕様上、どうしてもクラスオブジェクトが *Manager のような感じで、管理をする感じでやるなら、
『データ構造による』でしょうね。

なので何とも言えません。

また、プログラミングは『こう書けばいい』……ではなく、

プログラムは魔法でもなんでもなく、人間が現実世界でやっていることを逐一指示されながら処理しているだけの代物である』です。

投稿2021/06/05 08:30

BeatStar

総合スコア4962

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

add(e)の形で可能でしょうか…?

文法レベルでは間違い(コンパイルエラー)なので不可能ですが、
考え方としては、たぶん合っていると思います。
とはいえ具体的なコードを提示されていないので、

まずは、実際に書いてみてはどうでしょうか?

ぐらいの回答しかできないです。

投稿2021/06/05 05:46

momon-ga

総合スコア4826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Java

1class A { 2 int v; 3 A(int x) { v = x; } 4} 5 6class B extends java.util.ArrayList<A> { } 7 8class Main { 9 public static void main(String[] args) { 10 B b = new B(); 11 b.add(new A(1)); 12 b.add(new A(2)); 13 b.add(new A(3)); 14 for (var e : b) System.out.println(e.v); 15 } 16}

これではダメですか?

投稿2021/06/04 16:52

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問