Описание тега defensive-copy

2 ответа

Добавить защитную копию объекта в хешсет

В настоящее время у меня есть этот код: public final class Tutor { private String name; private final Set<Student> tutees; public Tutor(String name, Student[] students){ this.name = name; tutees = new HashSet<Student>(); for (int i = 0; …
3 ответа

Можно ли сделать этот класс более неизменным?

package main; import java.util.Collections; import java.util.HashSet; import java.util.Set; public final class Tutor { private final String name; private final Set<Student> tutees; public Tutor(String name, Student[] students) { this.name = na…
3 ответа

Создание общей копии Set<String> в конструкторе

Я не нашел прямого ответа на этот конкретный вопрос, так что... Предположим, класс: class MyClass { private final Set&lt;String&gt; tags; MyClass(Set&lt;String&gt; initialTags) { this.tags = ???(initialtags); } } Я просто хочу копию, не заботясь о т…
02 ноя '12 в 09:23
1 ответ

Правильный способ создания защитной копии пользовательского класса

У меня есть следующий класс: public class FolderAgent { public string directoryName {get; private set; } public int numberofdirectories {get; private set; } public int numberofFiles {get; private set;} public DirectoryInfo [] directories {get; priva…
17 фев '16 в 15:41
4 ответа

Инкапсуляция изменяемого объекта в объект только для чтения

В настоящее время я внедряю итерационные решатели, которые последовательно улучшают оценку решения конкретной проблемы. Поскольку решение представляет собой довольно большой набор данных, уточнение выполняется на месте. Я реализовал простой шаблон O…
11 авг '11 в 10:51
2 ответа

Относительно неизменного класса защитного копирования

У меня есть вопрос относительно создания неизменяемого класса. Ниже приведены моменты, которые я принимаю во внимание: Сделать финал класса Сделайте все члены окончательными, установите их явно, в статическом блоке или в конструкторе Сделайте всех у…
17 авг '12 в 06:14
3 ответа

'Collections.unmodifiableCollection' в конструкторе

Время от времени во время проверки кода я вижу конструкторы, подобные этому: Foo(Collection&lt;String&gt; words) { this.words = Collections.unmodifiableCollection(words); } Это правильный способ защиты внутреннего состояния класса? Если нет, каков и…
28 янв '16 в 20:52
2 ответа

Защитное копирование Objective-C в методах доступа

Исходя из опыта Java, у меня возникли проблемы с поиском способов защитного программирования в Objective-C.Предполагая, что SomeClass является изменяемым и предоставляет метод копирования, это типичный фрагмент кода, который я написал бы на Java: pu…
2 ответа

Неэффективность защитной копии в Java

Я давний программист C/C++, который изучает Java. Я читал о проблеме нарушения инкапсуляции с помощью метода доступа, который возвращает ссылку на приватное поле. Стандартное решение Java кажется защитным копированием - вызывая конструктор копирован…
1 ответ

Передача неизменного списка в ImmutableList.copyOf()?

У меня есть следующий код: private static final ImmutableMultimap&lt;String, String&gt; namesToAddress; public static List&lt;String&gt; getAddresses(String name){ return ImmutableList.copyOf(namesToAddress.get(name)); } Мой вопрос заключается в том…
14 апр '16 в 17:19
0 ответов

Как заставить MyBatis работать с защитными копиями?

Давайте предположим эту простую схему: create table User ( identity BIGINT UNSIGNED, PRIMARY KEY (identity), name VARCHAR(32) NOT NULL); create table Role ( identity BIGINT UNSIGNED, PRIMARY KEY (identity), name VARCHAR(32) NOT NULL); create table U…
30 мар '12 в 16:26
5 ответов

Вставка LinkedList привязана к вставленному объекту

У меня есть код, который выглядит так: public class Polynomial { List&lt;Term&gt; term = new LinkedList&lt;Term&gt;(); и кажется, что всякий раз, когда я делаю что-то вроде term.add(anotherTerm)с другими объектами Term, являющимися... другим объекто…
0 ответов

Защитная копия потоков и процесса

У меня Process proc запуск которого мне нужно уничтожить и воссоздать в случае ошибки. Это связано с проблемой отправки команд через stdin процессу, которую он не может устранить. Мой обходной путь - сбросить построенное мной "соединение" (stdin, st…
26 ноя '12 в 21:58
1 ответ

Создайте защитную копию в конструкторе

Ниже приведен только пример кода для объяснения проблемы, которую я не могу понять: Допустим, у меня есть следующий класс профессора, обратите внимание на публичных получателей и установщиков: public class Professor { public string id {get; set; } p…
18 фев '16 в 01:01
1 ответ

Защитное копирование в терминах ссылочного параметра в конструктор

Может кто-нибудь, пожалуйста, скажите мне, что такое защитное копирование с точки зрения ссылочного параметра в конструктор класса в JAVA Спасибо оооочень большое
02 июн '13 в 02:06
0 ответов

Есть ли аннотация lombok (или любая другая аннотация), которая включает защитное копирование?

То, что я хочу быть в состоянии сделать это: public Employee getEmployee() { return new Employee(employee); } Так что это похоже на это public List&lt;String&gt; getList() { return new ArrayList&lt;&gt;(list); } Так что, если я этого хочу, мне приде…
26 ноя '18 в 05:31
2 ответа

Как сделать класс java неизменным, если в нем есть переменная-член другого пользовательского класса?

Недавно в интервью для роли Java Developer меня спросили, как сделать Class A неизменным, если у него есть переменная-член, которая является объектом Class B, и в ситуации, когда Class B является внешним по отношению к проекту и не может быть отреда…
30 ноя '15 в 18:36
2 ответа

Нарушение сонара:Security-Array хранится напрямую

Я пытаюсь изменить свои коды в моем приложении с помощью Sonar. Как это исправить и почему? Благодарю. public class BeanResultSetHandler&lt;T&gt; extends BasicResultSetHandler&lt;T&gt; { T instance; Class&lt;T&gt; clas; Object[] selectFields; /** * …
26 окт '15 в 13:03
1 ответ

Обменять коллекцию защитной копией

Вот пример, который я видел в книге по эффективному C#: private BindingList&lt;PayrollData&gt; data; public IBindingList MyCollection { get { return data; } } public void UpdateData() { // Unreliable operation might fail: var temp = UnreliableOperat…
23 авг '11 в 21:34
4 ответа

Нужно ли защищенное копирование для построения неизменяемого класса с * не окончательными *, хотя неизменяемыми полями?

Не следует раскрывать ссылку на не конечное поле, если вы хотите создать неизменяемый класс - но даже для неизменяемых объектов, таких как Strings? public final class Test { // Test class is meant to be immutable private String s; // CAN'T MAKE THIS…