是否可以在java中的数组中存储函数? 比如.. ..
public void getMyname(){
// do something here;
}
public void getLastname(){
//do something here;
}
Array arr = {getLastName,getMyname};
那样的?如果是这样的话?
答案 0 :(得分: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;
}
适用于我.. ^ _ ^ Goodluck
答案 1 :(得分:1)
您无法在Java中的数组中存储方法,因为方法不是Java中的第一类对象。这是一些人喜欢使用Python,Scheme等其他语言的原因。
解决方法是创建一个包含一个方法的接口,然后创建实现该接口的四个类 - 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();
}
答案 2 :(得分: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数组相比,您处理的数据类型(名称,颜色,国家/地区代码等数组)不太明显。
也就是说,如果您坚持取消引用名称数据,如果您选择这样做,则创建String
数组或List<String>
并不困难:
String[] nameArray = {person.getFirstName(), person.getLastName()};
// or
List<String> nameList = new ArrayList<String>();
nameList.add(person.getFirstName());
nameList.add(person.getLastName());