Unchecked call to 'add(E)' - Warming

0

Witam
Czy jest możliwe usunięcie poniższego warminga?
Unchecked call to 'add(E)' as a member of raw type 'java.util.ArrayList

Custom_ArrayList

import java.util.ArrayList;

public class Custom_ArrayList {

    ArrayList<Custom_ArrayList> D;

    ArrayList Array;

    <T> Custom_ArrayList(){

        Array = new ArrayList<T>();

    }

}

Main

private Custom_ArrayList Buttons_Menu;
Buttons_Menu = new <Button> Custom_ArrayList();
Buttons_Menu.Array.add(new Button());

Czytałem o @SuppressWarnings("unchecked"), jednak nie wiem czy słusznie, ale nie wydaje mi się to dobrą praktyką.
Powyższa klasa ma za zadania stworzyć ArrayList obiektów oraz "wskaźnik" na następne ArrayListy.

1

Ale co to jest niby? Ten kod to jakiś WTF... Co ty tu chciałeś zrobić? Bo ewidentnie zrobiłeś to bardzo bardzo źle...

0

Klasa ta miała przechowywać przyciski menu. Z głównego menu można dostać się do kilku następnych, z każdego kolejnego menu do następnych. Uznałem że najlepszym rozwiązaniem będzie klasa zawierająca ArraList z przyciskami obecnego menu oraz coś w style wskaźnika do następnej ArrayListy.

EDIT:
Problem rozwiązany, poczytałem trochę o klasach i uznałem że poprzednia była faktycznie lekkim WTF.
Zmodyfikowany kod:

public class Custom_ArrayList <T>{

    ArrayList<Custom_ArrayList> D;

    ArrayList <T> Array;

}
0

Nadal wygląda mi to na WTF :)
W szczególności nazwy obiektów: D oraz Array i to jeszcze pisane wielką literą ;)

1
Kamil9132 napisał(a):

Czy jest możliwe usunięcie poniższego warminga?

Nie usuwaj. W zimie to zaleta. ;P

0

@bakeraw2
Co jest złego w nazwie Array?
D jest dlatego że klasa zawiera tylko dwa pola, a dłuższa nazwa zajmowałaby zbyt wiele miejsca przy odwoływaniu się do dalszych "wymiarów" klasy:
Buttons_Menu.get(2).D.get(1).D.get(1).D.get(0).Array.add(...)

0
Kamil9132 napisał(a):

Buttons_Menu.get(2).D.get(1).D.get(1).D.get(0).Array.add(...)`

Ja bym się zastanowił nad tym kodem... ;)

0

Mógłbyś podać jaki sposób zaprojektowania menu byłby lepszy? Nie chodzi mi o kod, tylko bardziej o pomysł.
Obecny sposób wydaje mi się dogodny do użycia, jednak z lepszego z chęcią bym skorzystał.

Rysowanie menu:

    public void Draw(Canvas canvas) {

        canvas.drawBitmap(Graphic_Menu.Menu[6], 0, 0, null); //Tło

        Custom_ArrayList<Button> Template = Buttons_Menu.get(MenuPage.get(0));

        for (int TB_01 = 1; TB_01 < MenuPage.size(); ++TB_01) Template = Template.D.get(MenuPage.get(TB_01));

        for (Button TB_01 : Template.Array) TB_01.Draw(canvas, false, 0, false);

    }

Obsługa kliknięć:

        int Value = ArrayList_To_Value(MenuPage);
        int Result = 0;

        if (Value == 0)         Result = MenuLogicClick_00(X, Y);
        else if (Value == 1)    Result = MenuLogicClick_01(X, Y);
        else if (Value == 20)   Result = MenuLogicClick_02_0(X, Y);
        else if (Value == 21)   Result = MenuLogicClick_02_1(X, Y);
        else if (Value == 210)  Result = MenuLogicClick_02_1_0(X, Y);
        else if (Value == 211)  Result = MenuLogicClick_02_1_1(X, Y);
        else if (Value == 2110) Result = MenuLogicClick_02_1_1_0(X, Y);
        else if (Value == 212)  Result = MenuLogicClick_02_1_2(X, Y);
        else if (Value == 213)  Result = MenuLogicClick_02_1_3(X, Y);
        else if (Value == 214)  Result = MenuLogicClick_02_1_4(X, Y);
        else if (Value == 3)    Result = MenuLogicClick_03(X, Y);
        else if (Value == 4)    Result = MenuLogicClick_04(X, Y);
    private int ArrayList_To_Value(ArrayList<Integer> Array){

        int Value = 0;

        for (int TB_01 = 0; TB_01 < Array.size(); ++TB_01){

            Value += Array.get(TB_01) * Math.pow(10, Array.size() - TB_01 - 1);

        }

        return Value;

    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1