在不实例化对象的情况下调用外部方法

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 为空,以上代码确保第一次初始化