2013-04-24 5 views
0

Я подготовил классы Date и DateTest, которые показаны ниже;Ошибка метода строки Java

Дата Класс

public Date(String m, int d, int y) 
{ 
this("m",d,y); 
} 

DateTest Класс

Date myDate2 = new Date("april",18 , 2013); 
System.out.println(myDate2); 

Но я получаю ниже сообщение об ошибке. Может ли кто-нибудь сообщить мне, в чем проблема, и как я могу это исправить.

Сообщение об ошибке Исключение в потоке "основного" java.lang.Error: нерешенная проблема компиляции: рекурсивного вызова конструктора Date (String, INT, INT)

at Date.<init>(Date.java:24) 
at DateTest.main(DateTest.java:10) 

ответ

4

Судя по сообщению об ошибке, Я бы сказал, что вызов this(), является то, что вызывает проблему

public Date(String m, int d, int y) 
{ 
this("m",d,y); 
} 

, по-видимому, призывающую this("m",d,y); в вашем с onstructor означает, что вы выполняете рекурсивные вызовы в своем конструкторе, что даже не имеет смысла.


Я думаю, что, может быть, вы хотите сделать что-то вдоль линий

public Date(String m, int d, int y) 
{ 
    this.Month = m; 
    this.Day = d; 
    this.Year = y; 
} 
+0

+1 за то, что я в голове: D – DmiN

+0

так, как я могу исправить это Сэм? – Behzat

+1

@Behzat избавиться от этой линии. Если вы подробно остановитесь на том, что, по вашему мнению, должно быть на линии, я могу рассказать вам, как ее заменить –

1

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

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