В Java существуют неизменные типы. И если вы передадите неизменяемый объект методу, он не будет изменен после вызова этого метода, даже если это значение было изменено в этом методе. Я знаю, что все примитивы неизменны. И String
тоже неизменен.
Я написал простой код для проверки этой функциональности на Java, и кажется, что классы-оболочки для примитивов тоже неизменяемы. Может ли кто-нибудь перечислить все неизменяемые типы в java?Все неизменные типы в java
ответ
не будут меняться после вызова, что метод, даже если это значение было изменено в этом методе
не имеет ничего общего с неизменяемым.
void change(SomeType st) {
st.setValue(123);
}
изменит реальную вещь. Хотя
void change(SomeType st) {
st = new SomeType(123);
}
не будет. Разница здесь заключается в том, изменяете ли вы ссылку или работаете с объектом, на который делается ссылка.
Строка и те классы-оболочки называются неизменяемыми, потому что нет абсолютно никакой функции-члена, такой как setValue
, которая может изменить этот объект.
Надеюсь, вы это понимаете. Вы можете свободно комментировать и спрашивать, есть ли у вас какие-либо сомнения.
Я понял, спасибо большое. – shift66
Любой класс, предназначенный для хранения примитивного значения, предоставленного в jdk, должен передать этот список.
Пример: Целое, длинное, двойное, строка и т. Д.
В Java примитивный тип перечисляется: байтовый, короткий, int, long, char, float, double, bool. Примитивные и неизменные - две совершенно разные вещи. – Haozhun
@Gene, Вы неправильно поняли заявление. Любой класс, представляющий собой примитивные значения ... Надеюсь, теперь вы поняли суть. –
Я все еще не понял. Простите. Однако downvote заблокирован из-за тайм-аута, и теперь я не могу его изменить. Сожалею. – Haozhun
Нет, это невозможно.
Каждый может добавить свои собственные неизменные типы, и я уверен, что каждая другая версия Java представила несколько новых
Да, я знаю, я искал в Google. Я хочу знать все известные неизменные типы. Например, Integer. Каждый может использовать этот тип. Кажется, что URI тоже неизменен. Это круто? – shift66
@Ademiban: Где это заканчивается? Все могут также использовать домены Apache, должны ли перечисляться также перечисленные имена?> – amit
В javadoc есть вся эта информация. из URI javadoc: Экземпляры этого класса неизменяемы. поэтому да URI неизменен – Peter
примитивы не являются неизменяемыми. Тот факт, что «они не меняют никаких изменений после передачи их методу», заключается в том, что они передаются по значению, а не из-за неизменности. – amit
Аналогичный вопрос: http://stackoverflow.com/questions/5124012/examples-of-immutable-classes – Azodious
Что было бы причиной узнать этот список? – Dapeng