12

我正在制作定制盔甲,在我的盔甲类中,我收到了这个错误:

ArmorE 类型的方法 getArmorTexture(ItemStack, Entity, int, int) 必须覆盖或实现超类型方法

为什么我收到此错误?

这是我的代码:

护甲等级:

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;
    }
}

主要课程的一部分:

//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

9 回答 9

32

如果您使用的是 Eclipse,请尝试关闭并再次打开它。错误消失。

于 2016-02-10T14:21:17.857 回答
12

要覆盖方法,签名需要与超类的签名相匹配。代替

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

public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
于 2014-09-29T23:29:22.683 回答
7

这意味着您不需要覆盖注释,因为您没有覆盖或实现该方法的某些内容。因此,您应该只删除

@Override
于 2014-09-29T23:25:14.263 回答
3

我是通过谷歌搜索带到这里的,虽然这对 OP 没有帮助(因为显然他们的问题在接受的答案中得到了解决),但我想与潜在的未来访问者分享我的问题。

我失去了理智 - 我正在使用 Jetty 并且有一个方法不接受 Override 注释。我什至从基类中复制并粘贴了它,以确保我没有以某种方式破坏方法签名。虽然许多答案说忽略它,但它是 websocket 的入口点并且它没有触发 - 显然,我不能忽略它!

它最终成为导入 - 我从错误的包中导入 Session - 从 Jetty 包,所以它看起来确实是合法的,但我需要org.eclipse.jetty.websocket.api.Sessionorg.eclipse.jetty.server.session.Session我的导入中拥有。未来的访客不太可能拥有这对不匹配的进口包裹,但我怀疑有些人会在我刚刚乘坐的船上。

于 2020-04-23T04:03:15.903 回答
0

在您定义的接口 ItemArmor 中删除尖括号中的任何泛型类型。

于 2018-08-09T22:43:35.567 回答
0

如果您正在使用 Java Spring Framework,那么您必须通过<context:annotation-config/>在您的 ieconfig.xml文件中编写来提供注解的使用,以便能够使用诸如@Override@Component等注解@Value

如果不存在,请右键单击您的包并创建一个用于配置的 .xml(即 config.xml)文件。

并在其中添加以下代码。

<?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>
于 2019-01-19T10:54:56.773 回答
0

您可能在 Interface 或 Base-Class 中有未保存的内容。这就是为什么删除注释@Override可以清除错误的原因。

于 2019-07-18T13:13:15.467 回答
0

如果您检查了超类/接口的签名是否匹配但仍然出现错误。尝试先保存超类/接口。

于 2021-07-15T12:12:04.703 回答
0

OP 的问题已经解决,但是对于未来的访问者,我想说我有这个错误,问题是类型参数。

代替

field.addValueChangeHandler(new ValueChangeHandler<FieldType>() {
        @Override
        public void onValueChange(ValueChangeEvent<FieldType> event) {
            Window.alert("[DEBUG] I'm here");
        }
    });

我应该写

field.addValueChangeHandler(new ValueChangeHandler<String>() {
        @Override
        public void onValueChange(ValueChangeEvent<String> event) {
            Window.alert("[DEBUG] I'm here");
        }
    });

我花了一段时间才找到解决方案,因为错误消息似乎没有谈到这一点。

于 2021-07-26T13:13:30.270 回答