botWi
|
|
|
|
|
Рег.: 22.11.2003
|
Сообщений: 10160
|
Из: Moscow
|
Рейтинг: 1764
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: Alex]
25.12.2007 15:18
|
|
|
В ответ на:
Можно пример кода, плз?
code:
abstract class A {
protected abstract void _do();
public void do() {
try {
// open resources
_do();
} finally {
// close resources
}
}
}
|
Хватит дрочить на рейтинги |
|
Alex
|
veteran
|
|
|
|
Рег.: 16.10.2002
|
Сообщений: 1940
|
Из: ЮЗАО
|
Рейтинг: 18
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: _Ss_]
25.12.2007 15:18
|
|
|
> 1. Александреску настоятельно рекомендует не делать конструкторов, кидающих исключений (есть вопрос по C++) Ты точно уверен, что не путаешь с деструкторами? IMHO как раз рекомендуют (например, Страуструп) делать конструкторы с исключениями вместо init.
|
|
botWi
|
|
|
|
|
Рег.: 22.11.2003
|
Сообщений: 10160
|
Из: Moscow
|
Рейтинг: 1764
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: Alex]
25.12.2007 15:20
|
|
|
В ответ на:
IMHO как раз рекомендуют (например, Страуструп) делать конструкторы с исключениями вместо init.
правда что ли?
ну тогда это одно из тех мест где идеалогии джавы и с++ различаются
|
Хватит дрочить на рейтинги |
|
botWi
|
|
|
|
|
Рег.: 22.11.2003
|
Сообщений: 10160
|
Из: Moscow
|
Рейтинг: 1764
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: Alex]
25.12.2007 15:24
|
|
|
В ответ на:
3) Как обстоит дело в других языках?
я все равно продолжаю настаивать что если ты используешь new/delete то java и c++ тут равны ну и остальные языки естессно тоже также
|
Хватит дрочить на рейтинги |
|
Shurik
|
|
|
|
|
Рег.: 27.09.2003
|
Сообщений: 13646
|
|
Рейтинг: 787
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: Alex]
25.12.2007 15:25
|
|
|
Quote:
Как обстоит дело в других языках?
в C# code:
using (File f = new File("myfile.txt"))
{
using(Connection c = new Connection (ip_address, port))
{
do_smth(f, c);
}
}
исключения в конструкторе это не покрывает, но есть предположение, что файл не открывается в конструкторе.
|
not fluffing up the experience with features that will ultimately cause you a headache |
|
Alex
|
veteran
|
|
|
|
Рег.: 16.10.2002
|
Сообщений: 1940
|
Из: ЮЗАО
|
Рейтинг: 18
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: _Ss_]
25.12.2007 15:25
|
|
|
ЖЭСТЬ!!! Неужели так пишут? Это же какой-то C получается:
code:
fd = open("myfile.txt", O_RDONLY);
if (fd >= 0) {
p = malloc(200);
if (p) {
free(p);
}
close(fd);
}
|
|
_Ss_
|
|
|
|
|
Рег.: 21.11.2003
|
Сообщений: 4145
|
|
Рейтинг: 4662
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: Alex]
25.12.2007 15:28
|
|
|
В том-то и дело... Код не очень читаем. Единственный плюс - отсутствие дублирования кода. Хотя хз. Не использовал такие конструкции
|
Если сказанное мной может быть понято двояко, и первый вариант тебя расстраивает, я имел ввиду второй |
|
Alex
|
veteran
|
|
|
|
Рег.: 16.10.2002
|
Сообщений: 1940
|
Из: ЮЗАО
|
Рейтинг: 18
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: botWi]
25.12.2007 15:29
|
|
|
> правда что ли?
|
|
blind
|
still alive
|
|
|
|
Рег.: 16.01.2004
|
Сообщений: 23127
|
Из: Хамовники
|
Рейтинг: 16481
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: Shurik]
25.12.2007 15:31
|
|
|
using это такой syntax sugar для try finally?
|
13/37 =) |
|
botWi
|
|
|
|
|
Рег.: 22.11.2003
|
Сообщений: 10160
|
Из: Moscow
|
Рейтинг: 1764
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: Alex]
25.12.2007 15:33
|
|
|
ты привел явно не ту цитату там не написано, что использовать исключения в конструкторе это хорошо там лишь написано что вместо init() лучше использовать конструктор, а про исключения ни слова
|
Хватит дрочить на рейтинги |
|
Shurik
|
|
|
|
|
Рег.: 27.09.2003
|
Сообщений: 13646
|
|
Рейтинг: 787
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: blind]
25.12.2007 16:17
|
|
|
да, но он опирается на системный интрефей IDisposable. В Java такого интерфейса кажись нет.
|
not fluffing up the experience with features that will ultimately cause you a headache |
|
Mike
|
Ызарг
|
|
|
|
Рег.: 02.11.2002
|
Сообщений: 8098
|
|
Рейтинг: 2147
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: botWi]
25.12.2007 18:04
|
|
|
Quote:
я все равно продолжаю настаивать что если ты используешь new/delete то java и c++ тут равны
По этой теме я уже написал кучу постов. Си++ удобнее в плане работы с ресурсами, в этом он превосходит и Java, и даже C#. Что касается new и delete, то Java и Си++ равны до тех пор, пока ты не начал пользоваться деструкторами. Любой захват ресурса в Си++ идет через конструктор-деструктор, что спасает от любых проблем.
|
|
DarkGray
|
Carpal Tunnel
|
|
|
|
Рег.: 30.09.2002
|
Сообщений: 31411
|
|
Рейтинг: 8952
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: Shurik]
25.12.2007 18:32
|
|
|
code:
using (File f = new File("myfile.txt"))
{
using(Connection c = new Connection (ip_address, port))
{
do_smth(f, c);
}
}
лучше так
code:
using (File f = new File("myfile.txt"))
using(Connection c = new Connection (ip_address, port))
{
do_smth(f, c);
}
|
|
Shurik
|
|
|
|
|
Рег.: 27.09.2003
|
Сообщений: 13646
|
|
Рейтинг: 787
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: DarkGray]
25.12.2007 19:00
|
|
|
отличие только в скобочках?
|
not fluffing up the experience with features that will ultimately cause you a headache |
|
burivuh
|
Carpal Tunnel
|
|
|
|
Рег.: 08.08.2004
|
Сообщений: 4452
|
|
Рейтинг: 1567
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: Alex]
25.12.2007 19:21
|
|
|
В ответ на:
PS. Как обстоит дело в других языках?
Ну, в питоне нет "new/delete", а синтаксический сахар, заменяющий try/finally в работе с ресурсами выглядит так:
code:
with file('file1') as f:
do_with(f)
вложенность в однострочник не раскладывается, ну то есть можно попытаться сэмулировать что-то вроде
code:
with (file('file1') as f1, file('file2') as f2) :
do_with(f1,f2)
на первый взгляд... и для этого нужно сильное "колдунство" с контекстом. Хотя, может и нельзя...
|
Послушай, иногда мужчинам... нужно уважение иметь лицо (с) Безымянный переводчик |
|
DarkGray
|
Carpal Tunnel
|
|
|
|
Рег.: 30.09.2002
|
Сообщений: 31411
|
|
Рейтинг: 8952
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: Shurik]
26.12.2007 10:50
|
|
|
> отличие только в скобочках?
да ) так лучше передается, что для выполняемого блока нужны оба ресурса
|
|
horror
|
гонобобель
|
|
|
|
Рег.: 30.09.2002
|
Сообщений: 3783
|
|
Рейтинг: 2135
|
|
Re: [lamer] автоматическое управление ресурсами в Java
[re: DarkGray]
27.12.2007 09:52
|
|
|
Quote:
так лучше передается, что для выполняемого блока нужны оба ресурса
дело вкуса, конечно, но я позволю себе не согласиться у меня ощущение, что первая строчка ошибочно расположена..возможно плохо закопи-пастили откуда-то код
|
|