Używam IntDef z Android Support annotation w moim kodu (ale moje pytanie jest szerszy zakres więc proszę zachować czytania :) tak:@IntDef adnotacja i wartość zwracana z kodu innego użytkownika, którego nie można adnotować lub jak tymczasowo wyłączyć adnotację od wpływu na kod?
public class UiLockMode
{
@IntDef({DEFAULT, NONE, VISIBLE, TRANSPARENT})
@Retention(RetentionPolicy.SOURCE)
public @interface AllowedValues {}
public static final int DEFAULT = 0;
public static final int NONE = 1;
public static final int VISIBLE = 2;
public static final int TRANSPARENT = 3;
}
Dalej, mam kilka innych metod adnotacją z nim tak:
protected void setLockMode(@UiLockMode.AllowedValues int lockMode) {
...
W tym momencie wszystko jest w porządku i ładne, ale problem pojawia się gdy chcę przekazać wartości zwracanej z innych metod setLockMode()
, jak to jest z Parcelable realizacji:
private Foo(Parcel in) {
...
setLockMode(in.getInt());
W takim przypadku moje IDE skarży się, że mogę używać tylko DEFAULT, NONE, VISIBLE, TRANSPARENT
z setLockMode()
. Ale getInt()
nie jest moją metodą, więc nie mogę zanotować jej wartości zwracanej i sprawić, że wszystko to uszczęśliwi. Jestem również prawie pewien, że nie jest to przypadek wyjątkowy, ale nie udało mi się znaleźć sposobu na tymczasowe wyłączenie adnotacji ze złożenia skargi tutaj lub "wyrzucenia" wartości zwracanej z getInt()
, aby nie skarżyć się na AllowedValue
.
Moje pytania brzmią: czy istnieje jakiś sposób rozwiązania tego problemu? Może brakuje mi czegoś oczywistego na temat adnotacji, ale może będę tworzył raport o błędach, aby zamiast tego Google zareagował na ten problem?
Wszelkie uwagi i uwagi doceniane.
Dzięki za odpowiedź, +1. Tak, wiem, że mogę stłumić ostrzeżenia, ale nie chciałbym, chyba że nie mam innej opcji, więc w zasadzie zastanawiam się, czy jest tu jakikolwiek inny sposób rozwiązania mojego problemu. –
Przypuszczam, że możesz spróbować rozszerzyć Parcelę, aby dodać tam metodę myGetInt. – fractalwrench
Tylko sprawdzanie i rozszerzanie nie jest drogą, ponieważ nadal będziesz narzekać, ponieważ adnotacja sprawia, że oczekuje się, że "int" nie jest metodą. –