- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD})
public static @interface Property { String value(); }
public static class PropertyImpl implements Property {
private final String value;
public PropertyImpl(String value) { this.value = value; }
@Override public Class<? extends Annotation> annotationType() { return Property.class; }
@Override public String value() { return this.value; }
@Override public int hashCode() { return (127 * "value".hashCode()) ^ value.hashCode(); }
@Override public boolean equals(Object o) {
if (!(o instanceof Property)) { return false; }
Property other = (Property) o;
return value.equals(other.value());
}
}
отформатировал для компактности.
Идеи для чего делать реализцию аннотации?
guest 06.12.2011 22:34 # 0
@Test(expectedException = TirTupitException.class)
guest 06.12.2011 22:37 # −1
guest 06.12.2011 22:52 # 0
lucidfoxGovno 06.12.2011 23:00 # 0
guest 06.12.2011 23:03 # 0
lucidfoxGovno 06.12.2011 23:04 # 0
guest 06.12.2011 23:12 # +3
http://upload.wikimedia.org/wikipedia/commons/5/5c/Michael_Pacher_004.jpg
Lure Of Chaos 07.12.2011 12:13 # +6
а лучше анекдот (осторожно, скотоложство!):
Наташа Ростова спрашивает у поручика Ржевского:
-поручик, расскажите, чем вы вчера занимались?
-ну, например, вчера мы ебали лошадей...
Наташа в слезах убегает и жалуется капитану:
-фу, капитан, поручик Ржевский такой пошлый, низкий человек!
Капитан:
-низкий?? вот уж нет! например, мы вчера лошадей ебали. Так вот, все на табуретах, а он таак!
в общем, мы мордой не вышли, не завшивоинтеллегентили до ее уровня.
SmackMyBitchUp 07.12.2011 14:07 # +1
это что-то из ролевых игр?
Lure Of Chaos 07.12.2011 15:48 # +2
3.14159265 07.12.2011 15:53 # +2
Lure Of Chaos 07.12.2011 17:38 # +3
bugmenot 07.12.2011 21:38 # +1
eth0 07.12.2011 20:59 # +6
Lure Of Chaos 07.12.2011 21:23 # +2
плюсанул.
tir 07.12.2011 08:29 # 0
guest 06.12.2011 22:39 # −1
roman-kashitsyn 07.12.2011 09:19 # 0
Понятно, что делать этого руками не нужно ни при каких обстоятельствах. Интересен ответ...
tir 07.12.2011 09:28 # 0
koodeer 08.12.2011 02:34 # +7
tir 08.12.2011 08:13 # +1
Lure Of Chaos 07.12.2011 12:16 # 0
есть мнение, что аннотации в яве изуродовали язык, что они там не нужны, запутывают логику и вообще развращают.
roman-kashitsyn 08.12.2011 09:05 # +1
Начинаю потихоньку подумывать о переходе на c++...
tir 08.12.2011 09:25 # 0
roman-kashitsyn 08.12.2011 09:29 # +4
tir 08.12.2011 09:33 # +1
SmackMyBitchUp 08.12.2011 12:02 # +1
roman-kashitsyn 08.12.2011 12:07 # 0
3.14159265 08.12.2011 13:37 # 0
govnoguest 07.12.2011 10:04 # 0
"value".hashCode() - отдельная няшечка.
tir 07.12.2011 16:44 # +1
П. С. это вам не getFillColor().length() > 0 )))))))
roman-kashitsyn 07.12.2011 16:48 # 0
В команде джуниор?
tir 07.12.2011 16:55 # 0
3.14159265 07.12.2011 17:17 # +2
Создаем final Property checkerExample=new PropertyImpl ("adequate");
Потом, значит, достаем откуда-то рефлексией аннотацию типа Property, которую мы написали в коде.
@Property ("mudak") User animeGovno;
Property mudakAnno=Govnokod.class.get...(...);
И сравниваем, для этого собстно hashCode и equals.
assert(!checkerExample.equals(mudakAnno) );
Примерно так.
roman-kashitsyn 07.12.2011 17:24 # 0
3.14159265 07.12.2011 17:41 # 0
static boolean equals(...) рулит.
Впрочем код не плюсовал.
roman-kashitsyn 07.12.2011 17:48 # 0
tir 07.12.2011 18:47 # −1
Цитирую кусок документации:
Guice comes with a built-in binding annotation @Named that uses a string:
To bind a specific name, use Names.named() to create an instance to pass to annotatedWith:
П. С. Что самое прикольное оказалось - "... hashCode() specified in the Annotation Javadoc" :)
3.14159265 07.12.2011 18:57 # 0
Вот это
http://www.cs.rice.edu/~mgricken/research/xajavac/
действительно круто.
tir 07.12.2011 19:24 # 0
Lure Of Chaos 07.12.2011 19:42 # 0
3.14159265 07.12.2011 20:19 # 0
Возможность писать так, не бенефит?
@interface And extends InvariantAnnotation {
InvariantAnnotation[] value();
}
@Or({@And({@OnlyThreadWithName("foo"), @OnlyEventThread}),
@OnlyThreadWithName("bar")})
void f() { }
>и в чем заключается крутость?
в совместимости с жавой
Lure Of Chaos 07.12.2011 20:26 # 0
прямо как в http://govnokod.ru/6663
tir 07.12.2011 20:32 # 0
@OnlyThreadWithName("bar")})
void f() { }
по мне - это просто ЖЕСТЬ.
Lure Of Chaos 08.12.2011 12:51 # 0
roman-kashitsyn 08.12.2011 12:59 # 0
roman-kashitsyn 08.12.2011 15:31 # +1
Clojure решает подобные проблемы отсутствием лишних абстракций: метаинформация символов представляется там в виде обычной мапы.
tir 08.12.2011 15:41 # 0
guest 09.12.2011 22:18 # 0
guest8 09.04.2019 12:18 # −999