2014-10-23 7 views
2

Я новичок в Java, и я ничего не нашел об этом случае.Пропустить массив со строкой и int в другой класс

я в основном пытаюсь передать этот массив называется vakken к новому классу под названием Вак, Вак рассчитывает получить строку и Int.

 Vak[] vakken = new Vak[1]; 
     vakken[0] = new Vak("Test",3); 

     Vak vak = new Vak(vakken[0]); 

Всякий раз, когда я пытаюсь выполнить код выше, я получаю эту ошибку.

Exception in thread "main" java.lang.UnsupportedOperationException: Not supported yet. 
at ectsmonitor2.Vak.<init>(Vak.java:24) 
at ectsmonitor2.ECTSmonitor2.main(ECTSmonitor2.java:27) 
Java Result: 1 

Vak.class

public class Vak { 
    public String naam;   
    public int teVerdienenEcts; 

    public Vak(String vakNaam, int vakTeVerdienenEcts){ 
     naam = vakNaam; 
     teVerdienenEcts = vakTeVerdienenEcts; 
    } 
} 
+2

Показать ваш ** ВАК ** класс – Nabin

+0

На стороне примечание, публичные поля, как правило, не очень хорошая идея. См. [Encapsulation] (http://en.wikipedia.org/wiki/Encapsulation_%28object-oriented_programming%29). – m0skit0

ответ

7

Вы на самом деле не закодирован ваш конструктор, который принимает Vak еще, вы сделали это бросить UnsupportedOperationException. Поместите некоторый код в конструктор, например.

public Vak(Vak v) { 
    this(v.naam, v.teVerdienenEcts); 
} 
+1

Чтобы добавить к этому ответу - если OP пытается просто извлечь «Vak» из массива по какой-либо причине (а не создать новый), он должен написать 'Vak vak = vakken [0];' – DoubleDouble

1

Эта линия не будет работать наверняка

Vak vak = new Vak(vakken[0]);//IDE will display error message here 

Потому что у вас нет такой конструктор для этого.

Создайте новый конструктор, который возьмет объект своего типа.

Подобно этому:

public Vak(Vak anObject){ 
//do stuffs here 
} 

Такого рода конструкторы называют конструкторы копирования

и вообще вы не хотите, чтобы ваши атрибуты, чтобы быть общественности. Сделать их частным.

Смежные вопросы