私のアプリケーションの重複チェックのようにしようとしています。メソッドを使用して引数としてクラスからゲッターを渡すことができません
たとえば、ユーザーはユーザー名を変更したいので、基本的にクラスからユーザー名を取得し、重複した関数チェックを使用してユーザー入力と比較するゲッター関数があります。
しかし、私はこのようなチェックを必要とするフィールドを10個まで持ち、10個の異なるフィールドに対して10個の異なる重複機能チェックを作成して、コードを非常に長く乱雑にしています。
したがって、このmethod
ライブラリを使用して、複数の関数を作成する代わりにメソッドに関数を渡しました。ここで
はcannot convert string to method
したがって、私は私が文字列、それが言うように、それを宣言した私のクラスから私のgetterメソッドとメソッドの変数を初期化しようとすると、ライブラリ
//place where i read input and display any necessary info.
import java.lang.reflect.Method;
public void editUser()
{
Method method;
boolean found = false;
String userName = Keyboard.readString("Input username to change : ");
for(User u : userData)
{
method = u.getuserName(); // error occur here, cannot convert string to method
found = checkExist(userData, userName, method);
if(!found)
{
System.out.println("does not exist");
}
//do whatever stuffs if exist
}
}
//function that check for existance.
public void boolean checkExist(ArrayList<User> userData, String userName, Method method)
{
boolean found = false;
for(User u : userData)
{
if(userName.equals(method))
{
found=true;
break;
}
else
found=false;
}
return found;
}
を使用しようとしました方法ですどのように私は他のクラスとして私のゲッター関数で渡すことができる方法は、このゲッターメソッドでも信頼できる他の関数としてメソッドに文字列を変更することはありません。ここ
は、あなたの場合は、コンストラクタとgetterメソッド
public Player(String userName)
{
this.userName=userName;
}
public String getuserName()
{
return userName;
}
'p'とは何ですか?どのように初期化されますか? –
@RomanPuchkovskiyは間違いを発見してくれてありがとう。私はコードを書き直して、このスレッドのデバッグをより簡単に簡単にしました。そして、 'p'を' u'に変更するのを忘れました。 –
'getuserData()'は何を返しますか?コードを表示してください。 –