![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| jer1 |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 24.1.2005 Где: Харьков Украина Репутация: 4 Всего: 5 |
добрый день!,
если объявить метод foo вот так :
то что это мне даст?: семантическое подчеркивание что в коде не будет такого оператора
хотя если и будет, то после выхода из метода я всё равно получу указатель на первоначальный объект (ведь в метод ссылка передаётся по значению) я посмотрел конструкции в которых данный модификатор присутствует в исходниках jdk таковые присутствуют вот например один из конструкторов класса JTable:
зачем тут final? а документация javadoc эти модификаторы не показывает вот строка из api JTable(Object[][] rowData, Object[] columnNames) у кого-нибудь есть мысли? спасибо --------------------
:w!q |
||||||
|
|||||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
По-моему, это означает, что передаваемый объект не может изменяться. Константен в пределах данного метода.
Добавлено @ 15:31 Вообще, это ключевое слово имеет разную семантику при разных применениях. 1. Если мы объявлем класс, как final, то от него нельзя наследовать. 1. Если мы объявлем метод, как final, то его нельзя переопределять. 1. Если мы объявлем объект, как final, то его нельзя изменять. Згачение присваивается при инициализации, или при передаче в метод, как в данном случае. Надеюсь, ничего не напутал. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| jer1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 24.1.2005 Где: Харьков Украина Репутация: 4 Всего: 5 |
здесь показано, что состояние объекта является изменяемым вопрос про final в контексте объявления формальных параметров метода - есть ли в этом действительно польза (кроме удлинения кода), может это как-то связано с многозадачностью, во всяком случае классы System, Thread, ClassLoader содержат такие объявления методов --------------------
:w!q |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Да, проверил, действительно, действие модификатора распространяется только на сам объект, а не на его поля. То ли так и должно быть, то ли я чего-то не понимаю.
Думаю, польза от этого есть, хотя на практике еще не разу не применял. Знаю, что только final-методы могут быть inline => могут дать нам выигрыш в скорости. Что такое assert? -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| kashka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: 1 Всего: 1 |
Seit dem JDK 1.4 gibt es in Java eine assert-Anweisung. Diese, ursprünglich schon für die erste JDK-Version vorgesehene, dann aber aus Zeitgründen zurückgestellte Anweisung wird C- oder C++-Programmierern wohlbekannt sein. Sie dient dazu, an einer bestimmten Stelle im Programmablauf einen logischen Ausdruck zu plazieren, von dem der Programmierer annimmt, daß er stets wahr ist. Ist das der Fall, fährt das Programm mit der nächsten Anweisung fort, andernfalls wird eine Ausnahme des Typs AssertionError ausgelöst. Ein solcher Ausdruck wird auch als Invariante bezeichnet, denn er bleibt unverändert true, solange das Programm korrekt funktioniert.
JDK1.1-1.4 Assertions, wie assert-Anweisungen vereinfachend genannt werden, dienen also dazu, bestimmte Annahmen über den Zustand des Programmes zu verifizieren und sicherzustellen, daß diese eingehalten werden. Soll im Programm beispielsweise überprüft werden, ob eine Variable x nicht-negativ ist, könnte dazu die folgende assert-Anweisung verwendet werden: assert x >= 0; Das Programm überprüft die Bedingung und fährt fort, wenn sie erfüllt ist. Andernfalls wird eine Ausnahme ausgelöst. Natürlich hätte derselbe Test auch mit Hilfe einer einfachen if-Anweisung ausgeführt werden können. Die assert-Anweisung hat ihr gegenüber jedoch einige Vorteile: Der Programmcode ist kürzer. Auf den ersten Blick ist zu erkennen, daß es sich um einen Korrektheits-Check handelt und nicht um eine Verzweigung zur Steuerung des Programmablaufs. Assertions lassen sich zur Laufzeit wahlweise an- oder ausschalten. Im Gegensatz zu einer einfachen if-Anweisung verursachen sie praktisch keine Verschlechterung des Laufzeitverhaltens, wenn sie deaktiviert sind. Der im Syntaxdiagramm angegebene ausdruck1 muß immer vom Typ boolean sein, andernfalls gibt es einen Compilerfehler. Fehlt ausdruck2 (er darf von beliebigem Typ sein), wird im Falle des Nichterfülltseins der Bedingung ein AssertionError mit einer leeren Fehlermeldung erzeugt. Wurde ausdruck2 dagegen angegeben, wird er im Fehlerfall an den Konstruktor von AssertionError übergeben und dient als Meldungstext für das Fehlerobjekt. Добавлено @ 16:56 Извеняюсь сейчас переведу. |
|||
|
||||
| jer1 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 24.1.2005 Где: Харьков Украина Репутация: 4 Всего: 5 |
когда ты пишешь для себя, т.е контролируешь корректность передачу параметров, их обработку и т.д, то как правило используются assert. Т.е исходим из того, что алгоритм верен - ты просто убеждаешься (при помощи логического утверждения) в корректности каких-то элементов программы
сравнение с runtime-эксепшинами
во втором случае ты сам ответственен за то чтобы прайвет метод был вызван с корректным параметром, если этого не будет - алгоритм не верен при помощи assert ты об этом узнаешь и исправишь (при запуске программы утверждения можно включать/отключить даже селективно для разных пакетов, классов) ну а в первом случае клиент должен позаботиться об корректности параметра (javadoc метода об этом должен упоминать) см. также утверждения (assert) для динамического мониторинга программы java logging api --------------------
:w!q |
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
kashka
Да, так тяжеловато Это сообщение отредактировал(а) Lamer George - 13.4.2005, 17:02 -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| kashka |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 117 Регистрация: 29.11.2004 Где: Wolfenbuettel, Ge rmany Репутация: 1 Всего: 1 |
команда assert ставиться перед логическим выражением которое по предположению программиста true. Если это действительно так программа продолжает работу, со следующей комманды, в противном случае мы получаем AssertionError.
Добавлено @ 17:04 теперь дальше (тоже немного труднавато подходящие слова находить) Добавлено @ 17:05 Хотя jer1 уже все написал. Добавлено @ 17:07 Могу еще преимущества assert перед if написать, если интересно. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
jer1, kashka
Спасибо за объяснения. Добавлено @ 17:16
Буду признателен. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Domestic Cat |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Для чего нужен final
:
Запуск дает:
Есть, случае с классами и методами. Например, есli метод нельзя перегрузить, вызов егo статичски связан, а нe динамически. -------------------- |
||||||
|
|||||||
| jer1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 24.1.2005 Где: Харьков Украина Репутация: 4 Всего: 5 |
а когда метод нельзя перегрузить, пример!) --------------------
:w!q |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
-------------------- |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Вот это и дает возможность компилятору встроить метод как инлайн-функцию, если, конечно, он сочтет это целесообразным. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| jer1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 24.1.2005 Где: Харьков Украина Репутация: 4 Всего: 5 |
а в таком примере модиф. final что-то даёт?
--------------------
:w!q |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
По-моему, никакой особой оптимизации это не даст, я думаю проверка идет на уровне компилятора.
Это просто удобно - видно что аргумент не меняется; кроме того, локальные классы могут обращаться к переменным в локальном скопе только если те final. -------------------- |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Навряд ли, ведь для простого типа будет передано значение, а не ссылка. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| RTFM/STFW |
|
|||
|
Unregistered |
Be aware that declaring an object attribute final does not prevent it from being changed. In fact, the final only applies to the reference to the object and not the object itself. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Логично. Неизменяемой объявляется ссылка, а не объект.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: 9 Всего: 13 |
Мало того
|
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Массив ведь - тоже объект, и когда мы передаем массив, то передаем неизменяемую ссылку на него.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: 9 Всего: 13 |
Короче есть объекты видимые только в методе во время его выполнения. Это объекты, которые объявляются в этом методе и параметры метода. Если мы в этом же методе делаем иннер-класс, который обращается к отмеченным выше объектам - эти объекты должны быть объявлены как final.
Попробуйте из примера ниже убрать final из сигнатуры метода - не скомпилируется:
Хотя Domestic Cat об этом уже написал Это сообщение отредактировал(а) Zandr - 22.4.2005, 13:00 |
|||
|
||||
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
Кстати это свойство final можно использовать для реализации паттерна Singleton:
Зато так мы будем точно знать, что существует один и только один объект класса MySingleton. -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
simanyay
Здесь, в принципе, можно и не указывать final. Мы ведь все равно не сможем создать еще один объект MySingleton - у него же нет неприватного конструктора. Но хуже, конечно, не будет. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 8 Всего: 127 |
Народ, всё проще. Эккель пишет, что final - это просто напросто замена вызова метода его телом на уровне компиляции. т.е. это указание на то, что методом это считать нужног только в рамках исходника для понятности кода, а реально - это не метод никакой, а просто кусок другого метода в тех местах, где в коде он вызывается.
Даёт это экономию при быстродействии программы, поскольку операция вызова метода сопряжена с дополнительными издержками в частности на выделение памяти под контекст. Здесь получается экономия, но платить за неё приходится невозможностью наследования, что очень неудобно когда речь идёт о многократно-используемых библиотеках. -------------------- |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
По-моему, он писал не совсем так. Это рекомендация компилятору, которая совсем не обязательно будет выполнена. К тому же, это справедливо для методов и констант простых типов, но никак не для объектов или классов -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
Но тогда мы сможем после вызова getInstance заменить объект на другой. -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| Zandr |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: 9 Всего: 13 |
Укажи, пожалуйста, где он это пишет, только точно, чтобы можно было найти. Очень интересно было бы увидеть это своими глазами. И еще вопрос был про final применительно к параметрам метода, а не к самому методу, или классу, или instance member'у.
Только в одном из методов этого класса и никак иначе. Конструктор-то private. |
||||
|
|||||
| Се ля ви |
|
|||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 8 Всего: 127 |
Zandr
угу, мне тоже стало интересно этот момент перечитать уже -------------------- |
|||
|
||||
| simanyay |
|
||||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
Почему? А так
? -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
||||
|
|||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
Исключений нет. m=null, но INSTANCE спокойно сидит в памяти.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 6 Всего: 360 |
Век живи - век учись
Так как kashka запропастилась, я попробую перевести этот интересный абзатц про преимущества ассертов перед указанием if (Кстати тоже наследство Си, но в Яве они конечно элегантнее реализованы, т.к. не нужно никаких дефайнов ) ------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
|
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
У Эккеля это, оказывается, есть. Дочитываю, наконец
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
Точно. Но I'll be back Добавлено @ 14:34 sergej.z, хм... интересно. Спасибо за перевод. -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
В смысле? -------------------- |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 24 Всего: 151 |
simanyay еще подучит Джаву и покажет тебе, Zandr'у, модификатору final и остальным, где раки зимуют. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
во во -------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| simanyay |
|
|||
![]() Антон Ковалёв ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2053 Регистрация: 22.8.2002 Репутация: 3 Всего: 36 |
Перечитал я опять главу в Effective Java про синглтоны и теперь полностью согласен с Lamer George и модификатором final по поводу его работы. Вот.
-------------------- «It's better to be a pirate than to join the Navy» — Steve Jobs. |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Ааа, ну тогда ладно
-------------------- |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: 9 Всего: 13 |
Дык, я не против |
|||
|
||||
| hatsumeika |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.5.2005 Где: Минск Репутация: 2 Всего: 2 |
Я встречался с ситуацией когда нужно объявить аргумент метода final: при его использование в анонимном классе:
без final компилятор говорит: "FinalAndAnonimClass.java": local variable x is accessed from within inner class; needs to be declared final at line 7, column 28 Это сообщение отредактировал(а) hatsumeika - 14.5.2005, 19:01 |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: 9 Всего: 13 |
hatsumeika, в этом треде про этот случай уже минимум два раза написали
|
|||
|
||||
| hatsumeika |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 14.5.2005 Где: Минск Репутация: 2 Всего: 2 |
сорри, не заметил
|
|||
|
||||
| jer1 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 123 Регистрация: 24.1.2005 Где: Харьков Украина Репутация: 4 Всего: 5 |
вот ещё такая реплика:
различные инспекторы кода (pmd, findbugs etc) данный вопрос помещают в категорию optimization - imho логично: компилятору даётся дополнительная информация, о неизменности параметра по присвоению, а он уже вправе ею воспользоваться https://jjguidelines.dev.java.net/book/html...04.html#JAC_003 https://jjguidelines.dev.java.net/book/html/index.html сподобалось --------------------
:w!q |
|||
|
||||
| Tamerlann |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 10.11.2002 Где: Минск, Беларусь Репутация: 2 Всего: 2 |
Скажем прямо, даже у Sun не много про это сказано. http://java.sun.com/docs/books/tutorial/ja...lVariables.html
--------------------
http://timursdev.blogspot.com/ |
|||
|
||||
| Се ля ви |
|
||||
![]() Java/SOAрхитектор ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2016 Регистрация: 5.6.2004 Где: place without tim e and space Репутация: 8 Всего: 127 |
Чё-то совсем из головы вылетело. Если ещё не нашлось, - страница 246, либо "глава 6" -> "Ключевое слово final". Вот кусок (смог найти только английский вариант ):
Ну и дальше - там много про него интересного -------------------- |
||||
|
|||||
| nagliyvred |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 2.10.2005 Репутация: нет Всего: 3 |
Прочитал все вышенаписанное, но так и не понял: что нужно сделать компилятору такого чтобы он заинлайнил final метод? Эккель говорит что это возможно если метод небольшой и компилятор этого захочет... а заставить его никак нельзя? пробовал простейший пример:
дизассемблировал - никакого иналйна не наблюдается... понимаю что этот тест поверхностный и надо было провести более детальное исследование но не было времени..
компилировал 1.4 with optimization(netBeans 5.0 beta) |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Инлайн на этапе компиляции может делаться только для private методов (и то пока это не делается), а для public только JIT-ом.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Сонный бред был удалён его создателем
Это сообщение отредактировал(а) chief39 - 16.11.2005, 11:03 -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Хороша трава -------------------- |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: 15 Всего: 77 |
Не. Спать надо.... Понесло. Буду кофе пить -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| Entry_N3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
в продолжении про final у private метода:
Нужен ли final у private-метода (если да, то зачем?) в классе B, если он и так private и не даст себя переопределить? |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Нет не нужен, но и не запрещен.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| Entry_N3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 446 Регистрация: 8.2.2007 Репутация: нет Всего: нет |
LSD, понял.
|
|||
|
||||
| Shaggie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 570 Регистрация: 21.12.2006 Где: outer space Репутация: 4 Всего: 72 |
По поводу увеличения производительности классов и методов, объявленных как final: довольно свежая статья (2007-02)
это интересно |
|||
|
||||
| EvgenZ |
|
|||
![]() Freedom in me ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 3.8.2006 Репутация: нет Всего: 11 |
Чет вроде про это не обсуждали, что странно, как сделать объект-то константым ? Чтобы например
или так нельзя? -------------------- <удалено администрацией форума> |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
|
|||
|
||||
| EvgenZ |
|
|||
![]() Freedom in me ![]() ![]() Профиль Группа: Участник Сообщений: 407 Регистрация: 3.8.2006 Репутация: нет Всего: 11 |
Наверное не четко выразился, имелось ввиду сделать объект именно в этой функции константным. Т.е. именно этот объект "m".
Или например при передаче объекта в функцию
-------------------- <удалено администрацией форума> |
|||
|
||||
| Kangaroo |
|
|||
|
AA - Aussie Animal ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2042 Регистрация: 7.10.2006 Где: US Репутация: 21 Всего: 104 |
Я думаю нельзя. Как выход - передавать копию объекта в метод. -------------------- Lost.... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Нет. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |