2016-03-05 112 views
2

昨天编程一个Minecraft Mod时,我遇到了一个问题。Minecraft Modding“Can not instantiate type”creatring CreativeTab

下面是代码:

Main.java类

package com.enricobilla.tempercraft; 

import com.enricobilla.tempercraft.creativeTab.MyCreativeTab; 

@Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.MOD_VERSION) 
public class TemperCraft { 
    public static final MyCreativeTab tabTemperCraft = new MyCreativeTab("tabTemperCraft"); 
    ... other code ... 
} 

和MyCreativeTab.java类

package com.enricobilla.tempercraft.creativeTab; 

import net.minecraft.creativetab.CreativeTabs; 
import net.minecraft.item.Item; 

public abstract class MyCreativeTab extends CreativeTabs { 
    public MyCreativeTab(String label) { 
     super(label); 
     this.setBackgroundImageName("tab_tempercraft.png"); 
    } 
} 

所以,我的问题是,Eclipse的报告我“无法实例的类型MyCreativeTab“,我在Main.java中写了new MyCreativeTab("tabTemperCraft),我不知道为什么......

我已经在互联网上看过,但任何人都有同样的问题。

有人可以帮我吗?谢谢!

+1

抽象类不能被实例化。你需要做以下两件事之一:从你的MyCreativeTab类中移除关键字'abstract' *或者*创建另一个类来扩展MyCreativeTab类并使其具体化。后者你可以在你的'TemperCraft'类中实例化。 – aribeiro

+0

@aribeiro谢谢,你在7分钟内回答! – EnricoBilla

回答

2

这里的问题是,MyCreativeTab是一个抽象类型,不能实例化。 您需要删除类声明的abstract关键字或其子类。

见的Java Specification:

命名类可以声明抽象的这句话(§8.1.1.1),并且必须声明为抽象的,如果它未完全落实;这样的类不能实例化,但可以通过子类扩展。