5

So right now I have the following standard package name setup in my project:

SampleClass.java looks like this:

package main.java.model;

public class SampleClass {
    int packagePrivateMethod() {
    return -1;
    }
}

And SampleClassTest.java looks like this:

package test.java.model;

import main.java.model.SampleClass;

public class SampleClassTest extends junit.framework.TestCase {
    private SampleClass sampleClass;

    public void setUp() {
    this.sampleClass = new SampleClass();
    }

    public void test_packagePrivateMethod() {
    // this method can't be called right now why?
    //this.sampleClass.packagePrivateMethod();
    }
}

Why can't the method packagePrivateMethod() be called???

letter Q
  • 14,735
  • 33
  • 79
  • 118

1 Answers1

5

It can't be called because the two classes are not in the same package. One is in main.java.model the other in test.java.model.

Henry
  • 42,982
  • 7
  • 68
  • 84
  • 2
    But what about the best answer here: http://stackoverflow.com/questions/3004710/what-is-the-advantage-of-the-src-main-java-convention – letter Q Apr 21 '14 at 16:49
  • In this answer (i.e. a conventional maven project setup), two source folders are used `src/main/java` and `src/test/java`. The two classes are therefore in the same package (in this case the root or default package). – Henry Apr 23 '14 at 22:46