java - Inner class declaration and initialization -
i used code in c++, have convert project c++ java. in c++ using data structure pretty simple. trying replicate same thing, such java inner class , static nested class. after reading several examples online, , trying different versions, far got:
public class main { public static void main( string[] args ) { ... classouter outerobj = new classouter(); classouter.datainner value = outerobj.new classouter.datainner(); } } class classouter{ public static class datainner{ public int x; } ... protected void getno() { value.x=integer.parseint("493"); } }
however, when try compile, gives me error:
$ javac -cp "./" main.java main.java:15: error: '(' expected classouter.datainner value = outerobj.new classouter.datainner();
any clue missing here?
classouter.datainner value = outerobj.new classouter.datainner();
this syntax applies inner classes (i.e. non static nested classes). if that's want, remove static
keyword public static class datainner
.
edit :
also change
classouter.datainner value = outerobj.new classouter.datainner();
to
classouter.datainner value = outerobj.new datainner();
you don't specify outer type when using enclosing instance initialize inner instance.
and line outerobj.value.x=integer.parseint("493");
not valid inside outer class's getno()
method, since outerobj
, value
local variables known main method.
if wish outer instance update of inner instances, must obtain reference it. here's 1 way :
public class main { public static void main( string[] args ) { ... classouter outerobj = new classouter(); classouter.datainner value = outerobj.new datainner(); outerobj.setinner (value); } } class classouter{ public static class datainner{ public int x; } ... private datainner inner = null; public void setinner (datainner inner) { this.inner = inner; } protected void getno() { inner.x=integer.parseint("493"); } }
Comments
Post a Comment