No, no se puede, el resultado de esto:
//concatenar con "ing". La idea es que cree la variable String a = "cadenaDinamica";
s.concat("ing") a = "cadenaDinamica";
Sería:
"String" a = "cadenaDinamica";
Y no:
String a = "cadenaDinamica"; // que es lo que buscas en definitiva
Java funciona con tipos de datos primitivos y objetos. Como bien explica este enlace:
http://es.wikipedia.org/wiki/Lenguaj...temente_tipado se trata de un lenguaje fuertemente tipado, por lo que es necesario definir previamente de qué tipo es la variable que se tiene.
Para transformar una variable dinámicamente en otra se utiliza lo que se denomina "Casting" o invocación, que es una conversión entre tipos de datos, siempre que esto sea posible.
Así: tu puedes convertir un int a = 4; en String b = "4";, pero no puedes convertir un String c = "cuatro" en int d = 4 (al menos no directamente salvo que crees propiamente un método que reconozca la palabra y la transforme en el número equivalente). Así mismo puedes castear a objetos de clases hijas a partir de un objeto de una clase padre, pero no al revés.
:/ espero que te sirva. La verdad no sé que pretendías hacer con eso que planteabas.