web-dev-qa-db-fra.com

La méthode doit remplacer ou implémenter une méthode de type supertype

Je fabrique une armure personnalisée et, dans ma classe d'armure, j'obtiens cette erreur:

La méthode getArmorTexture (ItemStack, Entity, int, int) de type ArmorE doit remplacer ou implémenter une méthode de type supertype.

Pourquoi je reçois cette erreur?

Voici mon code: 

Classe d'armure:

package com.domoq.EmeraldGear.armor;

import com.domoq.EmeraldGear.EmeraldGearMod;

import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;

public class ArmorE extends ItemArmor {

    public ArmorE(ArmorMaterial part2ArmorE, int part3, int part4) {
        super(part2ArmorE, part3, part4);
        this.setCreativeTab(CreativeTabs.tabCombat);
    }

    @Override
    public String getArmorTexture(ItemStack stack, Entity entity, int slot, int type) {
        if (stack.getItem() == EmeraldGearMod.EmeraldHelmet || stack.getItem() == EmeraldGearMod.EmeraldChest || stack.getIconIndex() == EmeraldGearMod.EmeraldBoots) {
            return "emeraldgearmod:textures/models/armor/ArmorL1.png";
        } else if (stack.getItem() == EmeraldGearMod.EmeraldLegs) {
            return "emeraldgearmod:textures/models/armor/ArmorL2.png";
        } else return null;
    }
}

Partie de la classe principale:

//Armor Material
public static ArmorMaterial ArmorE = EnumHelper.addArmorMaterial("AEmerald", 29, new int[]{3, 7, 4, 2}, 25);

//Armor Items
public static Item EmeraldHelmet = new ArmorE(ArmorE, 2, 0).setUnlocalizedName("EmeraldHelmet").setTextureName("emeraldgearmod:emerald_helmet");
public static Item EmeraldChest = new ArmorE(ArmorE, 2, 1).setUnlocalizedName("EmeraldChest").setTextureName("emeraldgearmod:emerald_chestplate");
public static Item EmeraldLegs = new ArmorE(ArmorE, 2, 2).setUnlocalizedName("EmeraldLegs").setTextureName("emeraldgearmod:emerald_leggings");
public static Item EmeraldBoots = new ArmorE(ArmorE, 2, 3).setUnlocalizedName("EmeraldBoots").setTextureName("emeraldgearmod:emerald_boots");
4
GriffinMite

Pour remplacer une méthode, la signature doit correspondre à celle de super class . Remplacer

public String getArmorTexture(ItemStack stack, Entity entity, int slot, int type) {

avec

public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
5
Reimeus

Si vous utilisez Eclipse, essayez de le fermer et de le rouvrir. L'erreur disparaît. 

11
sofs1

Cela signifie que vous n'avez pas besoin de l'annotation de substitution, car vous n'effectuez aucune substitution ni aucune implémentation dans cette méthode. Par conséquent, vous devez simplement supprimer

@Override
3
PsyCode

Dans votre interface définie, ItemArmor supprime tout type générique entre crochets angulaires.

0
Rare Case

Si vous travaillez sur Java Spring Framework, vous devez alors utiliser les annotations en écrivant <context:annotation-config/> dans votre fichier i.e config.xml afin de pouvoir utiliser des annotations telles que @Override, @Component, @Value, etc.

Cliquez avec le bouton droit de la souris sur votre package et créez un fichier .xml (i.e config.xml) à configurer s'il n'existe pas.

et Ajoutez le code suivant à l'intérieur.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- This allows annotations -->
    <context:annotation-config />


</beans>
0
Niamatullah Bakhshi