関数をJavaの配列に格納することは可能ですか? たとえば..
public void getMyname(){
// do something here;
}
public void getLastname(){
//do something here;
}
Array arr = {getLastName,getMyname};
そのように?もしそうなら、それは正しいですか?
さて、あなたはこれを行うことができます..
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] arrwow = {wow(),wow2()};
Toast.makeText(this, arrwow[1], Toast.LENGTH_SHORT).show();
}
public String wow(){
String wow = "wow";
return wow;
}
public String wow2(){
String wow2 = "wow2";
return wow2;
}
私で動作します.. ^_^グッドラック
メソッドは Java のファーストクラス オブジェクトではないため、Java の配列にメソッドを格納することはできません。これが、Python や Scheme などの他の言語を使用することを好む人がいる理由です。
回避策は、1 つのメソッドを含むインターフェイスを作成し、そのインターフェイスを実装する 4 つのクラス (MoveRight、MoveLeft など) を作成することです。次に、それらのクラスのインスタンスを配列に格納し、それらをすべて同じ方法で呼び出すことができます。
public enum Level1 implements Explorable{
ROOM1 {
public void explore() {
// fight monster
}
}, ROOM2 {
public void explore() {
// solve riddle
}
}, ROOM3 {
public void explore() {
// rescue maiden
}
};
}
public interface Explorable{
public abstract void explore();
}
public static void move(Explorable[] adjacentNodes, int index)
{
adjacentNodes[index].explore();
}
いいえ、関数を Java に格納することはできません。オブジェクト指向はどうですか?Person
名前情報をカプセル化するクラスを作成します。
public class Person {
private String firstName;
private String lastName;
public String getFullName() {
return firstName + " " + lastName;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
インスタンス化します:
Person person = new Person();
person.setFirstName("John");
person.setLastName("Doe");
操作するオブジェクトができたので、 のインスタンスをPerson
できるだけ長く渡すことをお勧めします。これは、型情報が保持されることを意味するためです。個人名を文字列配列に逆参照する場合と比較すると、扱っているデータの種類 (名前、色、国コードなどの配列) がわかりにくくなります。
String
そうは言っても、名前データの逆参照を主張する場合、または配列を作成するList<String>
ことを選択した場合、配列を作成することは難しくありません。
String[] nameArray = {person.getFirstName(), person.getLastName()};
// or
List<String> nameList = new ArrayList<String>();
nameList.add(person.getFirstName());
nameList.add(person.getLastName());