У меня есть класс, который содержит MutableList, и класс вносит изменения в этот список. Я определил метод получения, чтобы внешние модули могли получить копию списка. Проблема в том, что всякий раз, когда я получаю доступ к полю внутри класса, я в конечном итоге изменяю копию списка, а не фактический список. Как я могу получить доступ к списку, не проходя через геттер внутри определенного класса? Считается ли это плохой практикой, если да, то почему?
class Server(private val port: Int): Runnable {
val clients = mutableListOf<SocketChannel>()
get() = field.toMutableList()
private val sel = Selector.open()
private val serverChannel = NIOServerChannel(port, sel).get()
private val engine = ServerEngine(sel, clients)
private val acceptor = ChannelAcceptor(serverChannel, clients)
private val reader = ChannelReader()
private val writer = ChannelWriter()
private val middleware = Middleware()
override fun run() {
buildEngine()
println("Starting server on port: $port")
engine.run()
}
fun use(func: (String, Response) -> Unit) = middleware.add(BiConsumer(func))
private fun buildEngine() {
reader.process = middleware.get()
engine.add(acceptor)
engine.add(reader)
engine.add(writer)
}
}