ich in einem problem.There stecke sind drei Klassen 1.Teacher 2.TeacherEx 3.TeacherClassStatic Block wird nicht vor dem Konstruktor ausgeführt
ich ein statisches Objekt der Lehrer Klasse mache public static Teacher t
Wenn i mache 4 Objekte von TeacherEx
in TeacherClass
der statische Block in TeacherEx
wird nur einmal ausgeführt, während es 4 mal ausgeführt werden muss. Kann mir jemand erklären, was genau das Problem ist?
Posting alle 3 Klassen Lehrer Klasse
public class Teacher {
public static String name;
public static String subject;
public static int nolec;
}
public static class TeacherEx {
public int noStd;
public String place;
public static Teacher t;
public TeacherEx(int no, String p)
{
noStd=no;
place=p;
t.name="prashantha";
t.subject="Java_classes";
t.nolec++;
System.out.println("The nos of lec after creation class are "+t.nolec);
}
static{
if(t==null)
{
t=new Teacher();
}
else
{
System.out.println("Nothing");
}
System.out.println("The nos of lec before this class creation are "+t.nolec);
}
}
public class TeacherClass {
public static void main(String[] args)
{
TeacherEx a=new TeacherEx(45,"banglore");
TeacherEx b=new TeacherEx(75,"Mumbai");
TeacherEx c=new TeacherEx(49,"chennai");
TeacherEx d=new TeacherEx(47,"Newyork");
}
}
Es gibt kein Problem. Der statische Block wird beim ersten Laden der Klasse ausgeführt, was nur einmal vorkommt. Wenn Sie möchten, dass Code bei der Objektinstanziierung ausgeführt wird, fügen Sie ihn in den Konstruktor ein. –
Oder ... um es anders auszudrücken ... das Problem ist 1) Du verstehst nicht, wie Statik und statische Initialisierung funktionieren, und 2) Du solltest hier wahrscheinlich kein 'Static' verwenden. –
Ich kenne statische Konzepte. Ich habe versucht, alle möglichen Dinge mit statischen –