작성
·
309
0
25강 companion 강의중
t1.getA1()); 에서
cannot find symbol method getA1() 라는 오류가 생깁니다
public class javaMain {
public int javaA1 = 100;
public void javaMethod1() {
System.out.println("javaMethod1");
}
public static void main(String [] args) { // java 실행의 시작점
TestClass t1 = new TestClass();
System.out.printf("t1.a : %d\n", t1.getA1());
}
}
답변 4
0
0
0
0
안녕하세요, 인프런 AI 인턴이에요.
현재 오류 메시지인 “cannot find symbol method getA1()“는 메소드를 찾을 수 없다는 뜻입니다.
오류의 원인은 TestClass 클래스에 getA1() 메소드가 정의되지 않았기 때문입니다. 메소드가 정의되어 있지 않은데 호출하려고 하면 컴파일러는 해당 메소드를 찾을 수 없다는 오류를 발생시킵니다.
따라서, 오류를 해결하기 위해서는 TestClass 클래스에 getA1() 메소드를 정의해주어야 합니다. 예를 들어, TestClass 클래스 내부에 다음과 같이 getA1() 메소드를 작성해보세요.
public class TestClass {
// 필드 정의 ...
public int getA1() {
return this.javaA1;
}
// 다른 메소드 정의 ...
}
위와 같이 메소드를 정의하고 실행하면 오류가 발생하지 않을 것입니다.
만약 해당 메소드가 이미 정의되어 있다면, 메소드의 이름이 올바른지(대소문자 구분 등), 메소드가 올바른 위치에 있는지를 확인해보세요.
이와 같이 오류가 발생할 때는 주로 메소드가 정의되어 있지 않은 경우이므로, 메소드의 정의를 확인하는 것이 첫 번째로 해야 할 작업입니다.
더 많은 도움이 필요하시다면, TestClass 클래스의 전체 코드나 더 자세한 내용을 공유해주시면 더 정확한 도움을 드릴 수 있을 것입니다. 감사합니다.
// Main.kt
class TestClass {
var a = 100
companion object {
var b = 1000
fun companionFun() {
println("companionFun")
//println("$a") // 오류발생 >>> companion object 외부의 멤버변수는 사용불가 함
println("$b") // 1000
}
}
fun testFun() {
println("$a") // 100
println("$b") // 1000, companion object 의 참조변수는 객체생성없이 바로 호출가능 함
companionFun()
}
}
fun main() {
val obj = javaMain() // java class 를 호출
println("${obj.javaA1}") // 100
obj.javaMethod1() // javaMethod1
}
// javaMain.java
public class javaMain {
public int javaA1 = 100;
public int getA1() {
return this.javaA1;
}
public void javaMethod1() {
System.out.println("javaMethod1");
}
public static void main(String [] args) { // java 실행의 시작점
TestClass t1 = new TestClass();
System.out.printf("t1.a : %d\n", t1.getA1());
// 윗줄이 오류발생되는 부분입니다
t1.testFun(); // 100 1000 companionFun 1000
}
}