как импортировать статические члены одного класса в другой в java

#java

Вопрос:

У меня есть сомнения по поводу того, как импортировать статические члены класса в другой класс.

Структура проекта:

Details.java

 package JDBC.demo;

import java.util.ArrayList;

public class Details {
    static ArrayList<Integer>Details=new ArrayList<Integer>();
    int number;
    String name;
    Details(int number,String name){
        this.number=number;
        this.name=name;
    }
}
 

Controller.java

 package JDBC.demo;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

@RestController
public class Controller {
  @PostMapping("/EnterDetails")
    void insert(@RequestBody Details ob){
    //How to import the static member of the Details class i.e Details (ArrayList)


  }
}
 

Комментарии:

1. Details.Details ?

2. Что вы имеете в виду, когда говорите «импорт»? Вы хотите иметь возможность ссылаться на это внутри Controller as Details ? Или вы хотите, чтобы пользователи Controller класса могли сказать Controller.Details ? Если это последнее, вы хотите Details.Details , чтобы у вас был один и Controller.Details тот же список массивов или два похожих списка?

3. Я прогнозирую, что вам не следует этого делать, однако, поскольку Details это небезопасно для потоков, и вы можете наблюдать странные результаты.

4. Наконец, соглашение Java заключается в том, чтобы не начинать переменную с верхнего регистра. Таким образом, легче определить, что является переменной, например, по сравнению с именем класса.

5. Не. Статическое состояние почти всегда является катастрофой, и этот код необходимо полностью переработать. Возможно, вам нужно какое-то хранилище в памяти с поддержкой карт.

Ответ №1:

Вы можете легко сделать это по деталям.Подробные сведения. Но использование статики здесь не рекомендуется. Плюс ArrayList не является потокобезопасным. Если у вас нет другого выбора, кроме как использовать его таким образом, используйте как и вы

   List<String> synlist = Collections.synchronizedList(list);
 

Ответ №2:

Вы должны были использовать import static ... и инициализировать переменную, как static final в классе, который вы должны импортировать. Кроме того, если вы используете Spring Boot, вам необходимо аннотировать импортируемый класс