Recibo este error como-
No se puede acceder a ninguna instancia adjunta del tipo GeoLocation. Debe calificar la asignación con una instancia adjunta de tipo GeoLocation (por ejemplo, xnew A () donde x es una instancia de GeoLocation). Este error aparece en la nueva ThreadTask (i) . No sé por qué está pasando. Cualquier sugerencia será apreciada.
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));
}
// 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);
}
}
}
Respuestas:
Hola, encontré una solución para esto ;-)
Este error ocurre porque está intentando crear una instancia de una clase interna
service.submit(new ThreadTask(i));
sin crear una instancia de la clase principal.Para resolver este problema, primero cree una instancia de la clase principal:
Luego, cree una instancia de la clase que pretendía llamar, de la siguiente manera:
Espero que esto resuelva su problema ;-)
fuente
Otra opción, y la que prefiero, sería configurar la clase interna para que sea estática.
fuente
Haz la clase en línea
static
.Luego, puede crear una instancia de la clase interna de la siguiente manera:
fuente
Haz esta estructura:
EXPEDIENTE
GeoLocation.java
}
Expediente
ThreadTask.java
fuente
Necesita crear una instancia de la clase principal para crear instancias de sus clases internas. Aquí hay un ejemplo:
fuente
Esto también puede suceder si accede a miembros no estáticos desde los métodos estáticos o de manera similar. A continuación se presentan dos aspectos diferentes, uno que causa el error y otro fragmento de código resuelto. es solo cuestión de hacer "estático" a otro
Esto arroja el error No se puede acceder a ninguna instancia adjunta del tipo StackArrList. Debe calificar la asignación con una instancia adjunta de tipo StackArrList (por ejemplo, xnew A () donde x es una instancia de StackArrList). y no permitirá hacer una instancia de la clase Stack
Cuando haga la clase Stack en clase estática, Stack funcionará bien y no habrá ningún error.
fuente