在不实例化对象的情况下调用外部方法
Calling external methods without instantiating an object
我想知道是否可以调用外部 class 的方法而无需实际声明该 class 的对象。他们设置它的方式导致存储在对象中的 ArrayList 每次调用使用该对象的方法时都会清空。
如果我可以在没有对象的情况下调用该方法,那么我就可以解决我的问题。
提前致谢。
呼叫 class:
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();
}
}
外部方法class:
public class GAClass {
ArrayList<Application> peopleAttending;
public void storeApplication(String name, String item){
peopleAttending = new ArrayList<>(10);
peopleAttending.add(new Application(name, item));
}
}
使用静态方法。您可以在不创建封闭对象的情况下调用静态方法 class.
https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
你到底想达到什么目的?
class 中的 static
方法不需要 class 的实例,因此您可以制作所需的方法(不需要对象的状态 - 即不需要要处理的特定对象)static
并这样称呼它们:
ClassWithStaticMethods.staticMethod() ;
您可以执行如下操作
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 设置为静态时,它可以在静态方法中访问并且
if(null==peopleAttending){
peopleAttending = new ArrayList();
}
如果 peopleAttending 9s 为空,以上代码确保第一次初始化
我想知道是否可以调用外部 class 的方法而无需实际声明该 class 的对象。他们设置它的方式导致存储在对象中的 ArrayList 每次调用使用该对象的方法时都会清空。
如果我可以在没有对象的情况下调用该方法,那么我就可以解决我的问题。
提前致谢。
呼叫 class:
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();
}
}
外部方法class:
public class GAClass {
ArrayList<Application> peopleAttending;
public void storeApplication(String name, String item){
peopleAttending = new ArrayList<>(10);
peopleAttending.add(new Application(name, item));
}
}
使用静态方法。您可以在不创建封闭对象的情况下调用静态方法 class.
https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
你到底想达到什么目的?
class 中的 static
方法不需要 class 的实例,因此您可以制作所需的方法(不需要对象的状态 - 即不需要要处理的特定对象)static
并这样称呼它们:
ClassWithStaticMethods.staticMethod() ;
您可以执行如下操作
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 设置为静态时,它可以在静态方法中访问并且
if(null==peopleAttending){
peopleAttending = new ArrayList();
}
如果 peopleAttending 9s 为空,以上代码确保第一次初始化