Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> модификатор final, параметров метода 
:(
    Опции темы
nagliyvred
Дата 15.11.2005, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 2.10.2005

Репутация: нет
Всего: 3



Прочитал все вышенаписанное, но так и не понял: что нужно сделать компилятору такого чтобы он заинлайнил final метод? Эккель говорит что это возможно если метод небольшой и компилятор этого захочет... а заставить его никак нельзя? пробовал простейший пример:
Код

package finaltester;

public class FinalTester
{
    
    /** Creates a new instance of FinalTester */
    public FinalTester()
    {
        secondFinalMethod();
        secondNotFinalMethod();
    }
    
    public final int secondFinalMethod()
    {
        return -1;
    }

    public int secondNotFinalMethod()
    {
        return -1;
    }
    
    public static void main(String[] args)
    {
        FinalTester ft = new FinalTester();
        
    }
}

дизассемблировал - никакого иналйна не наблюдается... понимаю что этот тест поверхностный и надо было провести более детальное исследование но не было времени..
Код

package finaltester;


public class FinalTester
{

    public FinalTester()
    {
    //    0    0:aload_0         
    //    1    1:invokespecial   #1   <Method void Object()>
    //    2    4:aload_0         
    //    3    5:invokevirtual   #2   <Method int secondFinalMethod()>
    //    4    8:pop             
    //    5    9:aload_0         
    //    6   10:invokevirtual   #3   <Method int secondNotFinalMethod()>
    //    7   13:pop             
    //    8   14:return          
    }

    public final int secondFinalMethod()
    {
    //    0    0:iconst_m1       
    //    1    1:ireturn         
    }

    public int secondNotFinalMethod()
    {
    //    0    0:iconst_m1       
    //    1    1:ireturn         
    }

    public static void main(String args[])
    {
    //    0    0:new             #4   <Class FinalTester>
    //    1    3:dup             
    //    2    4:invokespecial   #5   <Method void FinalTester()>
    //    3    7:astore_1        
    //    4    8:return          
    }
}

компилировал 1.4 with optimization(netBeans 5.0 beta)
PM   Вверх
LSD
Дата 15.11.2005, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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.
PM MAIL WWW   Вверх
chief39
Дата 16.11.2005, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Сонный бред был удалён его создателем

Это сообщение отредактировал(а) chief39 - 16.11.2005, 11:03


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Domestic Cat
Дата 16.11.2005, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Цитата(chief39 @ 16.11.2005, 01:37)
....

Хороша трава


--------------------

PM   Вверх
chief39
Дата 16.11.2005, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


Профиль
Группа: Участник Клуба
Сообщений: 1631
Регистрация: 20.5.2005
Где: Киев

Репутация: 15
Всего: 77



Цитата(Domestic @ 16.11.2005, 10:41)
Хороша трава

Не. Спать надо.... Понесло. Буду кофе пить smile


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Entry_N3
  Дата 25.3.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



в продолжении про final у private метода:

Код

class A {
    private final void B() {
    }
}

class C extends A {
    private void B() {
    }
}




Нужен ли final у private-метода (если да, то зачем?) в классе B, если он и так private и не даст себя переопределить?
PM MAIL   Вверх
LSD
Дата 25.3.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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.
PM MAIL WWW   Вверх
Entry_N3
  Дата 25.3.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 8.2.2007

Репутация: нет
Всего: нет



LSD, понял.
PM MAIL   Вверх
Shaggie
Дата 13.9.2007, 06:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 570
Регистрация: 21.12.2006
Где: outer space

Репутация: 4
Всего: 72



По поводу увеличения производительности классов и методов, объявленных как final: довольно свежая статья (2007-02)
это интересно


--------------------
Цитата(alina3000 @  6.3.2014,  10:47 Найти цитируемый пост)
Сорри что не по теме 
PM MAIL ICQ GTalk Jabber   Вверх
EvgenZ
Дата 6.12.2007, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 3.8.2006

Репутация: нет
Всего: 11



Чет вроде про это не обсуждали, что странно, как сделать объект-то константым ? Чтобы например 

Код

class My
{
    public int i;
}

public class Main {
    public static void main(String[] args)
    {
        final My m = new My();
        m.i = 5; // чтобы вот так нельзы было
        System.out.println("m.i= " + m.i);        
    }

}



или так нельзя?


--------------------
<удалено администрацией форума>
PM MAIL   Вверх
powerOn
Дата 6.12.2007, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 47
Всего: 159



Код

class My
{
    public final int i;
}



--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
EvgenZ
Дата 6.12.2007, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 3.8.2006

Репутация: нет
Всего: 11



Наверное не четко выразился, имелось ввиду сделать объект именно в этой функции константным. Т.е. именно этот объект "m". 

Или например при передаче объекта в функцию

Код

public void Somethinq( SomeClass sc)
{
    sc.shalulalula = 5; // можно ли сделать так, чтобы именно в этой функции(Something) объект sc был константным?    
}



--------------------
<удалено администрацией форума>
PM MAIL   Вверх
Kangaroo
Дата 6.12.2007, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(EvgenZ @  5.12.2007,  23:34 Найти цитируемый пост)
 ввиду сделать объект именно в этой функции константным

Я думаю нельзя. Как выход - передавать копию объекта в метод.


--------------------
Lost....
PM MAIL MSN   Вверх
LSD
Дата 6.12.2007, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(EvgenZ @  6.12.2007,  00:34 Найти цитируемый пост)
Наверное не четко выразился, имелось ввиду сделать объект именно в этой функции константным. Т.е. именно этот объект "m". 

Нет.


--------------------
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.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0632 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.