我想知道是否可以调用外部类的方法而不必实际声明该类的对象。他们设置它的方式导致每次调用对象使用的方法时存储在对象中的ArrayList清空。
如果我可以在没有对象的情况下调用该方法,那么我可以解决我的问题。
提前致谢。
调用类:
public class BookingScreen extends Activity {
GAClass sendApplication = new GAClass();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_booking_screen);
}
public void saveBookingInfo(View view) {
EditText applicantNameText = (EditText) findViewById(R.id.applicantNameTextField);
EditText itemToBurnText = (EditText) findViewById(R.id.itemToBurnTextField);
String appName = applicantNameText.getText().toString();
String appItemToBurn = itemToBurnText.getText().toString();
if (appItemToBurn.isEmpty() || appName.isEmpty()) {
Toast.makeText(BookingScreen.this, "Please fill in all fields.", Toast.LENGTH_SHORT).show();
}
else {
sendApplication.storeApplication(appName, appItemToBurn);
this.finish();
}
}
外部方法类:
public class GAClass {
ArrayList<Application> peopleAttending;
public void storeApplication(String name, String item){
peopleAttending = new ArrayList<>(10);
peopleAttending.add(new Application(name, item));
}
}
答案 0 :(得分:4)
您可以执行以下操作
public class GAClass {
public static ArrayList<Application> peopleAttending=null;
public static void storeApplication(String name, String item){
if(null==peopleAttending){
peopleAttending = new ArrayList();
}
peopleAttending.add(new Application(name, item));
}
}
您可以调用上面的方法,如下所示
GAClass.storeApplication(str_name,str_item);
当你让peopleAttending arraylist static时,可以用静态方法访问
if(null==peopleAttending){
peopleAttending = new ArrayList();
}
如果peopleAttending 9s为空
,则上面的代码确保首次初始化答案 1 :(得分:3)
使用静态方法。您可以在不创建封闭类的对象的情况下调用静态方法。
https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
答案 2 :(得分:0)
你到底想要达到什么目的?
类中的static
方法不需要类的实例,因此您可以创建所需的方法(不需要对象的状态 - 即不需要特定的对象来处理){{ 1}}并像这样称呼它们:
static