Must qualify the allocation with an enclosing instance of type classname
-
public class GeoLocation { public static void main(String[] args) throws InterruptedException { int size = 10; // create thread pool with given size ExecutorService service = Executors.newFixedThreadPool(size); // queue some tasks for(int i = 0; i < 3 * size; i++) { service.submit(new ThreadTask(i)); //wrong syntax } // wait for termination service.shutdown(); service.awaitTermination(Long.MAX_VALUE, TimeUnit.DAYS); } class ThreadTask implements Runnable { private int id; public ThreadTask(int id) { this.id = id; } public void run() { System.out.println("I am task " + id); } } }if we execute the following code.it will throw us the error “No enclosing instance of type GeoLocation is accessible. Must qualify the allocation with an enclosing instance of type GeoLocation (e.g. x.new A() where x is an instance of GeoLocation)”.
This error happens because in the above code i am trying to create an instance of an inner class service.submit(new ThreadTask(i)); without creating instance of main class.
To resolve this issue please create instance of main class first:
GeoLocation outer = new GeoLocation();
Then create instance of class you intended to call, as follows:service.submit(outer.new ThreadTask(i));
Since main method is static and i try to call inner class from here i have to do like this.if your main method is non static you dont have to follow this.
The blog I need help with is: (visible only to logged in users)
- The topic ‘Must qualify the allocation with an enclosing instance of type classname’ is closed to new replies.