In the code below, I’ve added two lines that print output. The first line prints junk as usual, but surprisingly the second one gives me a compilation error. Why?
class Student {
private String name;
public Student(String name){
this.name = name;
}
public String getName(){
return name;
}
}
class StudentServer {
public StudentServer(){
Student[] s = new Student[30];
s[0] = new Student("Nick");
// LINE 01: This compiles, although prints junk
System.out.println(s[0]);
// LINE 02: I get a error called cannot find symbol
System.out.println(s[0].getName());
}
public static void main(){
new StudentServer();
}
}
The issue with
mainmethod not being a proper application entry point aside, this code should compile and run just fine. The problem seems to lie elsewhere, and there’s not enough information at the moment to identify the source.Related questions
On
toString()The reason why printing
s[0]“prints junk as usual” is because you didn’t@OverridethetoString()method inherited fromObject.If you had just added this method:
then printing
s[0]wouldn’t print “junk”; it would print whatever the abovetoString()returns (which in this case, is something reasonably “not junk”).Related questions