Java создает объект, но не массивы, которые приходят с ним [дублировать]

На этот вопрос уже есть ответ здесь:

У меня есть объект на java, который кодирует что-то как таковое:

public class Obj(){
    private string[] array = {
        "1","2","3","4",etc...
    };
    public Obj(String param){
        if (param=this.array[1]){ do something.. }
    }
}

Поэтому мне нужно иметь такую информацию в фоновом режиме. Однако, по-видимому, он занимает много оперативной памяти. Поэтому мне было интересно, есть ли способ просто иметь массив один раз для всех этих объектов вместо того, чтобы иметь его в каждом отдельном объекте.

РЕДАКТИРОВАТЬ:

Сделал его статичным. Делает магию. Спасибо, ребята.

Спасибо!

3 ответа

  1. Вы можете сделать его статическим, тогда будет только один массив для всех объектов класса. Несомненно, это сделает вашу программу более эффективной, чем хранение массива в каждом создаваемом вами объекте класса.

  2. Я надеюсь, что вы можете сделать его статическим:
    Static означает, что переменная принадлежит классу, а не экземплярам класса. Таким образом, существует только одно значение каждой статической переменной, а не n значений, если у вас есть n экземпляров класса.

     private static String[] array = {
                "1","2","3","4"...etc
            };
    
  3. Вы можете рефактировать массив в отдельный класс, который будет содержать только этот массив в качестве final staticчлена, а затем вы можете повторно использовать его в других классах, делая статический доступ к этому массиву членов:

    public class MyArray{
         public final static string[] array = { "1","2","3","4",etc...   };
    }
    
    public class Obj(){
        public Obj(String param){
            if (param == MyArray.array[1]){ do something.. }
        }
    }
    

    Боковое Примечание

    Я не уверен, зачем вам нужен такой массив, но если вы хотите рефактировать свой код таким образом:

    public class Obj(){
    
        public Obj(String param){
    
            //This will check param again string values of 0 ... 100
            for(int i=0; i < 100; i++)
                 if (param == String.valueOf(i)){ do something.. }
        }
    }