자바, 다른 클래스에서 문자열 가져오기
조회수 1392회
문자 변수 선언하는 클래스와 출력하는 클래스를 따로 만들어서 관리하려고 합니다.
그런데 변수는 잘 가져오는데 문자열만 가져오려고 하면 문제입니다.
밑에 문제가 되는 부분만 간단하게 예제로 만들어서 첨부합니다.
감사합니다.
// 출력 담당 클래스
package test;
public class test {
test(){
for (int i=0;i<var.size;i++)
{
System.out.println(var.txt[i]);
}
}
public static void main(String[] args) {
new test();
}
}
// 변수관리 클래스
package test;
public class var {
public final static int size = 5;
public static String txt[];
public var() {
txt = new String[size];
for (int i=0;i<size;i++)
{
txt[i] = new String();
txt[i] = "abcd"+i;
}
}
}
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
Exception in thread "main" java.lang.NullPointerException at test.test.<init>(test.java:13) at test.test.main(test.java:18)
var.txt
의 값을var()
생성자에서 할당해주도록 작성했는데, 정작var()
생성자를 호출하지 않아 발생하는 문제입니다.var.txt
에 접근하기 전에var()
생성자를 명시적으로 호출하면 문제는 해결됩니다만:test() { new var(); // <-- 요기 for (int i = 0; i < var.size; i++) { System.out.println(var.txt[i]); } }
사실 static 멤버를 non-static 멤버가 초기화하는 것은 굉장히 이상한 코드입니다. 아래처럼 static 블록으로 초기화하세요:
public class var { public final static int size = 5; public static String txt[]; static { // <-- txt = new String[size]; for (int i = 0; i < size; i++) { txt[i] = new String(); txt[i] = "abcd" + i; } } public var() {} }
댓글 입력