🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

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

Q&A

解決済

5回答

891閲覧

乱数を格納した配列を複数のクラスで共有したい。

entd270

総合スコア19

Java

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

0グッド

0クリップ

投稿2018/07/07 18:10

java初心者です。
1つのクラスで10個乱数を発生させ、それを配列に入れたとします。
その配列を他の複数のクラスで共有したい場合、どのような記述にすればいいのでしょうか。それぞれのクラスでnew で新しいインスタンスを作ってしまったら、違う乱数が格納されている配列になってしまいます。どうしたら、同じ配列を利用できるのでしょうか。
できないのはオブジェクト指向の理解が甘いのが原因だと思います。
よろしくお願いいたします。

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

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

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

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

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

m.ts10806

2018/07/07 22:48

このままでは丸投げ質問(非推奨質問の代表格です)となってしまうので、自身が調べていく中でやってみたコードをご提示ください。その上で「何が」「どう」分からなかったのか記載してください。 https://teratail.com/help/question-tips
guest

回答5

0

スレッドセーフの観点上、あまり複数のクラスで共有するのはおすすめしませんが。

Java

1import java.util.Arrays; 2import java.util.Random; 3 4public class A134955 { 5 public static final Samples sample = new Samples(10); // staticで宣言 6 7 public static void main(String[] args) { 8 new Other(); 9 new Other(); 10 } 11} 12 13class Other { 14 Other() { 15 System.out.println(Arrays.toString(A134955.sample.getData())); 16 } 17} 18 19class Samples { 20 private final int[] samples; 21 22 Samples(int size) { 23 samples = new Random().ints().limit(size).toArray(); 24 } 25 26 public int[] getData() { 27 // 防御的コピー、明日の天気を絶対に外さない自信があるならcloneは不要。 28 return samples.clone(); 29 } 30 31 @Override 32 public String toString() { 33 return Arrays.toString(samples); 34 } 35}

投稿2018/07/08 13:21

編集2018/07/08 13:27
umyu

総合スコア5846

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

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

0

ベストアンサー

class A {
public int [] random;
int size =10;

// setter
public void ShareMyData(){
random = new int[size];
// store random numbers
}

public int[] GetData(){
return random;
}

another way is use static methods

投稿2018/07/08 05:24

編集2018/07/08 05:34
AliHassan

総合スコア351

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

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

退会済みユーザー

退会済みユーザー

2018/07/08 08:03

「new で新しいインスタンスを作ってしまったら、違う乱数が格納されている配列になってしまいます。」
guest

0

another method try singleton design pattern

投稿2018/07/08 16:15

AliHassan

総合スコア351

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

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

0

投稿2018/07/07 20:18

hichon

総合スコア5739

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

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

0

シングルトンクラスにするとか、クラス変数にするとかを検討してみるとよいです。

  • [Java] シングルトンパターン

https://qiita.com/koara-local/items/6350b8ccbec3badab4fa

  • 【Java入門】static変数(クラス変数)の使い方

https://www.sejuku.net/blog/22426

投稿2018/07/08 21:10

katoy

総合スコア22324

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問