2

関数をJavaの配列に格納することは可能ですか? たとえば..

public void getMyname(){

// do something here;

}

public void getLastname(){

//do something here;
}

Array arr = {getLastName,getMyname};

そのように?もしそうなら、それは正しいですか?

4

3 に答える 3

2

さて、あなたはこれを行うことができます..

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;
}

私で動作します.. ^_^グッドラック

于 2012-08-11T06:42:02.040 に答える
1

メソッドは 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();
}
于 2012-08-11T06:34:15.860 に答える
0

いいえ、関数を 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());
于 2012-08-11T07:48:48.300 に答える