Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Bład w kodzie


Rekomendowane odpowiedzi

Opublikowano

witam mam problem z kodem do pluginu minecraft, wszystko jest ok tylko jeden publik nie:

public List<Block> getPistons(BlockRedstoneEvent event)
  {
    List pistons = new ArrayList();   //Tu Błąd
    if (((event.getNewCurrent() > 0) && (event.getOldCurrent() > 0)) || ((event.getNewCurrent() == 0) && (event.getOldCurrent() == 0))) {
      return pistons;  //Tu Błąd
    }
    BlockFace[] faces = { BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST, BlockFace.UP, BlockFace.SELF, BlockFace.DOWN };
    for (BlockFace face : faces)
    {
      Block piston = event.getBlock().getRelative(face);
      if ((piston.getType().equals(Material.PISTON_BASE)) || (piston.getType().equals(Material.PISTON_STICKY_BASE))) {
        pistons.add(piston);   //Tu Błąd
      }
    }
    return pistons;  //Tu Błąd

Wszędzie zą błędy z ArrayList albo po return jak w przykładzie wyrzej!

Prosze o pomoc

z góry thx..

Opublikowano

Nie powinieneś przypadkiem nadać typ przechowywanych obiektów przez twoją listę?
Coś w stylu: List<String> pistons = new ArrayList<String>();

2mmtzeu.jpg

Opublikowano

1) Najprawdopodobniej importujesz List z java.awt, a nie z java.util.

2) Bloki kodu w Javie zaczyna się bezpośrednio po deklaracji metody:





public List<Block> getPistons(BlockRedstoneEvent event) {

A nie linię pod.

3) Dodawaj zawsze parametr typu (<Block>):





List<Block> pistons = new ArrayList<>();

Od Java 7 można pominąć typ w drugim... nawiasie? Nie wiem jak to nazwać.

 

Jednakże najprawdopodobniej rozwiązaniem jest punkt 1.

 

@UP Nie, nie musi.

708121422388637873334.png

Opublikowano

 

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;

takie są importy z util

Opublikowano

to wyskakuje

ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized

jeszcze jest taki bląd w

tags.add(gildia.getTag());
Type safety: The method add(Object) belongs to the raw type List. References to generic type List<E> should be parameterized

I zaczęło mi wywalać importy, a wszystkie biblioteki mam/.

 

import org.bukkit.Chunk;
import org.bukkit.World;
import org.bukkit.command.PluginCommand;
import me.multi.data.DataManager;
Opublikowano

@povskill Lol, można tak. Skompiluj sobie to:



    public static void main(String... args) {
        System.out.println(lol().get(0));
    }
    static List<String> lol(){
        List list = new ArrayList();
        list.add("lol");
        return list;
    }

708121422388637873334.png

Opublikowano

 

@povskill Lol, można tak. Skompiluj sobie to:



    public static void main(String... args) {
        System.out.println(lol().get(0));
    }
    static List<String> lol(){
        List list = new ArrayList();
        list.add("lol");
        return list;
    }

 

To, że niektóre błędy idiotów nie wykrywa kompilator, to nie znaczy ze idiota powinien pisać idiotyzmy.

 

http://stackoverflow.com/questions/2770321/what-is-a-raw-type-and-why-shouldnt-we-use-it

http://docs.oracle.com/javase/tutorial/java/generics/

 

l2java.

  • 5 tygodni później...
Opublikowano

Zamiast:

 List pistons = new ArrayList(); 

Powinno być:

 List<Block> pistons = new ArrayList<Block>(); 

Dlaczego tak? Bo w Twoim kodzie konwertujesz z typu surowego(raw) na typ generyczny(z List do List<Block>)Kompilator zgłasza błąd, bo nie wie jakiego typu są obiekty w surowym List(można tam wsadzić String na przykład). W kodzie który ja napisałem nie ma żadnych niebezpiecznych konwersji.(U Ciebie są przy return'ie)

Mam nadzieję ,że zrozumiałeś ;)

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...