Как мне клонировать общий список в Java?

Никто, казалось, действительно не нашел окончательного ответа, поэтому я немного погубил и узнал, почему.

в системе / library / Email.php, сначала посмотрите на строку 1552:

if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, "-f ".$this->clean_email($this->_headers['From'])))

Кажется, все посылает все персидское. У меня тоже были те же симптомы. Чтобы убедиться, что я был сумасшедшим, я вставил сразу перед ...

mail($this->_recipients, $this->_subject, $this->_finalbody)

, поэтому я в основном удалил все заголовки и дал PHP по умолчанию. Бинго! Без заголовков CI это работает. С заголовками CI это не так. Итак, что это?

Копаясь еще немного, я посмотрел, где html инициализируется и используется. Оказывается, что на самом деле ничего не происходит до 1046, где он строит тело сообщения.

из строки 1048:

if ($this->send_multipart === FALSE)
{
    $hdr .= "Content-Type: text/html; charset=" . $this->charset . $this->newline;
    $hdr .= "Content-Transfer-Encoding: quoted-printable";
}
else
{
    $hdr .= "Content-Type: multipart/alternative; boundary=\"" . $this->_alt_boundary . "\"" . $this->newline . $this->newline;

    $body .= $this->_get_mime_message() . $this->newline . $this->newline;
    $body .= "--" . $this->_alt_boundary . $this->newline;

    $body .= "Content-Type: text/plain; charset=" . $this->charset . $this->newline;
    $body .= "Content-Transfer-Encoding: " . $this->_get_encoding() . $this->newline . $this->newline;
    $body .= $this->_get_alt_message() . $this->newline . $this->newline . "--" . $this->_alt_boundary . $this->newline;

    $body .= "Content-Type: text/html; charset=" . $this->charset . $this->newline;
    $body .= "Content-Transfer-Encoding: quoted-printable" . $this->newline . $this->newline;
}

Отбрасывание send_multipart между TRUE и FALSE сделает mail класс работает или не работает.

Просмотрел код класса электронной почты Ignitor's document ничего не показывает. Переход к строке 52:

var $send_multipart = TRUE; // TRUE/FALSE - Yahoo does not like multipart alternative, so this is an override.  Set to FALSE for Yahoo.

Итак, у вас это есть. Возможно, ошибка в том, как CI делает многопользовательские сообщения? Предпочтение скрытой конфигурации

$config['send_multipart'] = FALSE;

в файле email.php похоже на трюк.

147
задан Hasan Nahiyan Nobel 29 December 2018 в 05:45
поделиться

8 ответов

ArrayList newArrayList = (ArrayList) oldArrayList.clone();
57
ответ дан Vinko Vrsalovic 29 December 2018 в 05:45
поделиться
ArrayList first = new ArrayList ();
ArrayList copy = (ArrayList) first.clone ();
1
ответ дан jodonnell 29 December 2018 в 05:45
поделиться

Это должно также работать:

ArrayList<String> orig = new ArrayList<String>();
ArrayList<String> copy = (ArrayList<String>) orig.clone()
2
ответ дан user2627846 29 December 2018 в 05:45
поделиться

Я нахожу, что использование addAll хорошо работает.

ArrayList<String> copy = new ArrayList<String>();
copy.addAll(original);

круглые скобки используются, а не синтаксис дженериков

8
ответ дан Jonathan Precise 29 December 2018 в 05:45
поделиться

Почему Вы хотели бы клонироваться? Создание нового списка обычно имеет больше смысла.

List<String> strs;
...
List<String> newStrs = new ArrayList<>(strs);

сделанный Job.

310
ответ дан Tom Hawtin - tackline 29 December 2018 в 05:45
поделиться

Я думаю, что это должно добиться цели использование API Наборов:

Примечание : метод копии работает в линейное время.

//assume oldList exists and has data in it.
List<String> newList = new ArrayList<String>();
Collections.copy(newList, oldList);
14
ответ дан Aaron 29 December 2018 в 05:45
поделиться

Сообщите, что Object.clone () имеет некоторые основные проблемы, и его использованию препятствуют в большинстве случаев. Посмотрите Объект 11, от" Эффективный Java" Joshua Bloch для полного ответа. Я полагаю, что можно безопасно использовать Object.clone () на массивах типа примитива, но кроме этого необходимо быть разумными о надлежащем использовании и переопределении клона. Вы - вероятно, более обеспеченное определение конструктора копии или статического метода фабрики, который явно клонирует объект согласно Вашей семантике.

16
ответ дан Julien Chastang 29 December 2018 в 05:45
поделиться

Будьте очень осторожны при клонировании ArrayLists. Клонирование в Java мелко. Это означает, что только клонирует сам Arraylist и не его участников. Таким образом, если Вы будете иметь ArrayList X1 и клонируете его в X2, то любое изменение в X2 также проявит в X1 и наоборот. Когда Вы клонируетесь, Вы только генерируете новый ArrayList с указателями на те же элементы в оригинале.

2
ответ дан Juan Besa 29 December 2018 в 15:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: