0

構造 3 つのフィールドを持つ独自のクラスを作成したいと思います。最初のフィールド - 整数、2 番目のフィールドはオブジェクト (文字列、リスト)、3 番目のフィールドは整数です。私は2つのことを理解していません。

  1. 変数のストレージを整理する方法。Array または List がこれらの値を保存するメソッドを作成する必要がありますか? オブジェクトの値を保存するには?
  2. 2 番目のフィールド用。入力が文字列またはリストの場合、必要なタイプは何ですか? プリミティブ型として取りたい場合は、どうすればよいですか? オブジェクトを保存するには?

    public class Record {
       private int[] number;
       private int[] count;
       private Object[] code;
    
       public void add(int newNumber, List<String> newCode, int newCount){
    
         return;
       };
    
       public void add(List<String> newCode, int newCount,){
    
           return;
       };
    

これはうまくいきません。

   Object nobj = new Object();
nobj = "ss";
4

2 に答える 2

6

わかった。授業の目的を誤解しているようです。単一の をシミュレートするクラスを作成しましたが、多くの値を格納するようにRecord作成しました。Record

クラス構造を少し整理しましょう

public class Record {
private int number;
private int count;
private Object code;

public Record(int number, int count, Object code)
{
     this.number = number;
     this.count = count;
     this.code = code;
}

次に、クラスを作成して、クラス間のインターフェイスを管理できますRecord。たとえば、次のようになります。

public class Storage
{
     List<Record> records;
     public Storage()
     {
         this.records = new ArrayList<Record();
     }

     public void addRecord(int number, int count, Object code)
     {
          records.add(new Record(number, count, code));
     }
}

そうすれば、追跡するのが面倒な多くの異なる配列をいじることはありません。すべてがオブジェクト内にきれいにまとめられます。

2 番目の属性に関する問題

さて、この変数に何かを格納したいようです。これは元の問題よりもやや複雑ですが、Genericsが問題を解決してくれると思います。コードは書きませんが、デモンストレーションを行うことはできます。

public class GenericExample<T>
{
     T object;

     public GenericExample(T object)
     {
         this.object = object;
     }
}

さて、ここで行ったことは簡単です。新しいクラス を作成しました。GenericExampleこのクラスには特別なタイプ があると言いましたT。この型は実行時に定義され、さまざまな値を多数定義できることを意味します。例えば。

GenericExample<String> example = new GenericExample<String>("This is a string");
GenericExample<Object> example2 = new GenericExample<Object>(new Object());

型を定義して実行時に渡す方法がわかりますか? これをクラス構造に適用することを考えてみましょう。

于 2013-08-08T12:34:20.410 に答える
1

独自の を作成する必要が本当にない場合は、それListを避けてください。独自のタイプのデータを作成し、それを のパラメーターとして使用するだけですList

public class Record {
    private int number;
    private int count;
    private Object code;

    // Constructors, setters and getters
};

List<Record> myList = new ArrayList<>();
于 2013-08-08T12:35:50.507 に答える