Почему конструктор не определен?
Хотя я работаю с Bukkit, это проблема Java;
Я не знаю, почему Java говорит, что конструктор не определен, так как он определен
import org.bukkit.entity.EntityType;
import net.minecraft.server.v1_10_R1.EntityCow;
import net.minecraft.server.v1_10_R1.EntityInsentient;
public enum Pets
{
COW("Cow", 92, EntityType.COW, EntityCow.class, Pets.class);
private String name;
private int id;
private EntityType et;
private Class<? extends EntityInsentient> nmsClass;
private Class<? extends EntityInsentient> customClass;
Pets(String name, int id, EntityType et, Class<? extends EntityInsentient> nmsClass, Class<? extends EntityInsentient> customClass)
{
this.name = name;
this.id = id;
this.et = et;
this.nmsClass = nmsClass;
this.customClass = customClass;
}
public String getName()
{
return name;
}
public int getID()
{
return id;
}
public EntityType getET()
{
return et;
}
public Class<? extends EntityInsentient> getNMSClass()
{
return nmsClass;
}
public Class<? extends EntityInsentient> getCustomClass()
{
return customClass;
}
}
Любые идеи, как это решить, потому что я осмотрелся и не нашел ничего, кроме этого синтаксиса, и кажется, что все разговоры по таким темам, по крайней мере, 5 лет и очень расплывчаты.
1 ответ
Конструктор вашего перечисления Pets
ожидает 5 параметров:
Pets(String name, int id, EntityType et,
Class<? extends EntityInsentient> nmsClass,
Class<? extends EntityInsentient> customClass)
Когда вы объявляете постоянную COW
вы используете этот конструктор:
COW("Cow", 92, EntityType.COW, EntityCow.class, Pets.class);
Обратите внимание, что 5-й параметр, Pets.class
, не соответствует тому, что ожидает конструктор, потому что enum Pets
не расширяет и не реализует EntityInsentient
,
Есть несколько способов решить эту проблему, но какой из них вы должны использовать, зависит от остальной части вашей программы и того, чего вы пытаетесь достичь:
Вы можете изменить конструктор и поле
customClass
удалить связанноеextends EntityInsentient
,Вы могли бы сделать перечисление реализовать
EntityInsentient
(public enum Pets implements EntityInsentient
); это будет работать только если это интерфейс (перечисления не могут расширять классы).