Java sux 2
6 отговора
0 прегледа
Java sux 2
Имаме следната конструкция:
Class A {
public static B b = null;
}
class C {
public void some_f() {
Init_b();
А.b.doSomething(); // null pointer exception
}
public void Init_b() {
B new_b = new B();
A.b = new_b;
}
}
Оти се получава тъй?
Class A {
public static B b = null;
}
class C {
public void some_f() {
Init_b();
А.b.doSomething(); // null pointer exception
}
public void Init_b() {
B new_b = new B();
A.b = new_b;
}
}
Оти се получава тъй?
Редактирано от Pekoнcтpykтop на
Re: Java sux 2
Това дето си го дал не се компилира, така че ми е леко странно как си получил Нулпойнтър.
На Ц е ясно, че всеки маже както знае, но на Джава методи именувани some_f() и Init_b() просто изглеждат грозно
.
Самият код е доста странен, но не гърми.
package com.test;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new C().some_f();
System.out.println("Success");
}
}
class A {
public static B b = null;
}
class B {
public void doSomething() {
}
}
class C {
public void some_f() {
Init_b();
A.b.doSomething(); // null pointer exception
}
public void Init_b() {
B new_b = new B();
A.b = new_b;
}
}
На Ц е ясно, че всеки маже както знае, но на Джава методи именувани some_f() и Init_b() просто изглеждат грозно
Самият код е доста странен, но не гърми.
package com.test;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new C().some_f();
System.out.println("Success");
}
}
class A {
public static B b = null;
}
class B {
public void doSomething() {
}
}
class C {
public void some_f() {
Init_b();
A.b.doSomething(); // null pointer exception
}
public void Init_b() {
B new_b = new B();
A.b = new_b;
}
}
Редактирано от The lT Crowd на
Re: Java sux 2
да не би ексепшъна да изхвърчава вътре от функцията, и ти да се заблуждаваш че мембера е уж нула?
NE SUTOR ULTRA CREPIDAM
NE SUTOR ULTRA CREPIDAM
Re: Java sux 2
Ми би трябвало да нямаш null pointer exception.
Единствената ситуация, при която може да се случи това е ако garbage collector-a ти затрие B класа. Това обаче не знам как точно може да се случи при положение, че държиш референция към него в А класа и още повече е static променлива...Ама де да знам...то JVM-та има повече и от рибата в океана:-)
"A class or interface may be unloaded if and only if its defining class loader may be reclaimed by the garbage collector"
static
{
B new_b = new B();
A.b = new_b;
}// решава проблема - ако въобще наистина има проблем
Единствената ситуация, при която може да се случи това е ако garbage collector-a ти затрие B класа. Това обаче не знам как точно може да се случи при положение, че държиш референция към него в А класа и още повече е static променлива...Ама де да знам...то JVM-та има повече и от рибата в океана:-)
"A class or interface may be unloaded if and only if its defining class loader may be reclaimed by the garbage collector"
static
{
B new_b = new B();
A.b = new_b;
}// решава проблема - ако въобще наистина има проблем
Re: Java sux 2
My bad.
Не трябва да се гледа код след като си обядвал, особено ако си ударил и една биричка. 
Re: Java sux 2
Aarone, пак си недочел нещо. Нито ява, нито .НЕТ, нито езиците като концепция разбираш. Престани с глупавите обяснения.
Единствения начин да се случи халюцинацията на рекунструктора е присвояването да стане в един класлоудър а вземането от друг класлоудър за същия клас, понеже статичните променливи се реферират от зареден клас.
И този същия принцип го има в почти всички езици с виртуална машина спрямо начина на зареждане на код.
Това дето си го написал решава само проблема на психиатрите да ти поставят диагноза.
Единствения начин да се случи халюцинацията на рекунструктора е присвояването да стане в един класлоудър а вземането от друг класлоудър за същия клас, понеже статичните променливи се реферират от зареден клас.
И този същия принцип го има в почти всички езици с виртуална машина спрямо начина на зареждане на код.
Това дето си го написал решава само проблема на психиатрите да ти поставят диагноза.