2017-08-03 31 views
0

私は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歳で非常に曖昧です。

答えて

5

あなたの列挙型のコンストラクタPetsは、5つのパラメータを期待:、第五パラメータ、Pets.classこと

COW("Cow", 92, EntityType.COW, EntityCow.class, Pets.class); 

注意しません:あなたは定数COWを宣言するとき

Pets(String name, int id, EntityType et, 
     Class<? extends EntityInsentient> nmsClass, 
     Class<? extends EntityInsentient> customClass) 

あなたはこのコンストラクタを使用していますenum Petsは、EntityInsentientを拡張または実装していないため、コンストラクタが予期しているものに準拠しています。その1あなたが使用する必要があります

これを解決するには、いくつかの方法があります

が、あなたのプログラムの残りの部分と何を達成しようとしているに依存します:

  • あなたはコンストラクタを変更することができますし、フィールドcustomClass 、バインドを削除しますextends EntityInsentient

  • enumの実装をEntityInsentientpublic enum Pets implements EntityInsentient)にすることができます。これはインターフェイスである場合にのみ機能します(enumはクラスを拡張できません)。

関連する問題