[1.6.4] Регистрация предмета.

435
1
В общем есть метод, регистрирующий предмет.
Код:
pubic void registerSpecItem(Item item){
item = new myPredmetClass(bla, bla, bla);
}
В общем что - нужно вместо
Код:
myPredmetClass
использовать класс, который я укажу в методе.
 
435
1
У меня есть метод:
Код:
    public static void registerMyItem(Class<? extends MyItem> clazz, Item item, String iconPatch, String unlocalizedName, int id, EnumArmorMaterial material, int armorType, CreativeTabs tab, String name, ModelInfo[] modelInfo)
    {
        try {
            item = clazz.getConstructor(clazz).newInstance(id, material, 0, armorType, modelInfo).setIconPatch(iconPatch).setCreativeTab(tab).setUnlocalizedName(unlocalizedName);
            LanguageRegistry.addName(item, name);
            armorList.add(item);
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (SecurityException e) {
            e.printStackTrace();
        }
    }

При вызове с классом ItemExtendsExample

Получаю экзепшн
Код:
java.lang.NoSuchMethodException: itemTest.ItemExtendsExample.<init>(itemTest.ItemExtendsExample)

Где моя ошибка?
[merge_posts_bbcode]Добавлено: 19.08.2015 13:50:59[/merge_posts_bbcode]

Agravaine написал(а):
Код:
public void register(Class<? extends Item> clazz){
    item = clazz.getConstructor(params.class).newInstance(params);
}
Я не пойму что здесь есть params
 
435
1
то есть params - это аргументы конструктора моего MyItem(указаный класс наследует его). Тогда params.class (clazz.getConstructor(params.class)) - что это?
 
435
1
Если я правильно понял то для конструктора этого конструктора
Код:
    public ArmorExtendsExample(int id, EnumArmorMaterial mat, int par3, int par4) {
        super(id, mat, par3, par4);
    }

Часть метода будет выглядеть так:
Код:
armor = clazz.getConstructor(Integer.class, EnumArmorMaterial.class, Integer.class, Integer.class)
[merge_posts_bbcode]Добавлено: 19.08.2015 15:49:47[/merge_posts_bbcode]

только не Integer.class а int.class
 
Сверху