2016-10-30 11 views
0

私は複数のクラスからなるプログラムを書いています。 1つのクラスは「User」と呼ばれ、もう1つは「userGroup」と呼ばれます。私はUserクラスからコンストラクタ内に含まれている変数をインポートしようとしており、userGroupクラスでそれを使用しています。新しいクラスで変数を参照する方法は?

私は、次のコードを試してみた:

User userRetrieve = new User(); 
userRetrieve.User(); 

私はさまざまなチュートリアルで見てきたが、このコードは、これはあなたが別のクラスからデータを取得する方法をであることを、動作するようには思えません。コンストラクタはUserとも呼ばれるので、2行目は ".User()"を持っていますが、これが正しかったかどうかわかりませんし、プログラムの最初の問題が残っていても最初の行は残っています。

私はコード形式に私が間違っている表示される場合があり、余分な情報については、両方のクラスを紹介します:

Userクラス:

public class User { 

    String username; 
    String userType; 
    String name; 

    public User() { 
     username = "x"; 
     userType = "y"; 
     name = "z"; 
    } 

    public String getUsername() { 
     return username; 
    } 

    public String getUserType() { 
     return userType; 
    } 

    public String getName() { 
     return name; 
    } 

    public String setUserType(String admin) { 
     return userType = admin; 
    } 

} 

userGroupのクラス:

import java.util.ArrayList; 

public class userGroup { 

    String User; 

    ArrayList<User> userArray = new ArrayList<>(); 

    Integer user0; 

    public void addSampleData() { 

    userArray.add(new User()); 

    } 

    public void getUser(User user0) { 

     user0 = userArray.get(0); 

    } 

    public void printusername() { 

     System.out.println(user0.getUserName()); // x 


    } 
} 

I UserクラスのコンストラクタでusernameおよびuserType変数を使用しようとしています。

P.S任意の書式設定/インデントエラーのお詫び。

+1

を取得し、あなたの配列を作成し、ユーザーを追加することができ、ユーザーのクラスに

public class User { private String username; private String userType; private String name; // Use constructor to pass data to your class public User(String username, String userType, String name) { this.username = username; this.userType = userType; this.name = name; } public String getUsername() { return username; } public String getUserType() { return userType; } public String getName() { return name; } public String setUserType(String admin) { return userType = admin; } } 

をこの変更を示唆しますか? – MordechayS

+0

あなたは[mcve]を表示するために10人のユーザーを必要としません。 –

答えて

1

ユーザーのリストを作成します

List<User> users = new ArrayList<User>() 

は、いくつかのプロパティ、ユーザー(リストと配列はゼロインデックスをされている)

User user0 = users.get(0); 

印刷を取得したユーザ

users.add(new User()); 

を追加

System.out.println(user0.getUserName()); // x 
0

コンストラクタクラスで作成したgetメソッドを使用できますか?

ユーザー名とUSERTYPEがちょうどgetメソッド

User userRetrieve = new User(); 
String username = userRetrieve.getUsername(); 
String userType = userRetrieve.getUserType(); 

または代わりを使用して新しい変数を作成取得したいのであれば、あなただけの直接変数にアクセスできます。

User userRetrieve = new User(); 
String username = userRetrieve.username; 
String userType = userRetrieve.userType; 
+0

これは、フォーム1つのエラーで動作します。エラーは、ユーザーをシンボルとして認識しないことです。なぜ他のクラスの名前なのか分かりません。 –

+0

はコンパイル時の同じフォルダ/パッケージ内のクラスですか? – enem95

+0

ええ、私はちょうどダブルチェックしました。 –

0
User userRetrieve = new User(); 

この行では、タイプPersonの新しいオブジェクトをインスタンス化しています。 この特定のクラスに関連付けられたコンストラクタを呼び出すことによってこれを行います。

これを実行すると、Personクラスで定義したさまざまなメソッドを呼び出してパラメータにアクセスできます。あなたのケースではuserRetrieve.getUsername()などを使用する必要があります。しかし、これらの値を格納するために、呼び出し側クラスの変数を宣言する必要があります。

2

いくつかの概念を誤解しています。まずUser()メソッドがコンストラクタですので、User user = new User()というメソッドが呼び出されたときです。私は今、あなたはクラスのユーザーでgetメソッドを使用しないのはなぜその情報

List<User> users = new ArrayList<User>(); 
users.add(new User("x", "y", "z")); 

users.get(0).getUsername(); // returns "x" 
関連する問題