MATLAB Answers

How do I create an instance of a Java public static nested class from inside MATLAB 7.13 (R2011b)?

11 views (last 30 days)
I have a class that contains a public static nested class. How do I create an instance of the static nested class in MATLAB v7.15 (R2011b)?

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 1 May 2012
There are several ways this can be done. The following class Outer, which contains the public static nested class Inner, will be used to illustrate two possible ways:
public class Outer {
public static class Inner {
public int y;
public Inner() {
y = 1;
}
public Inner(int y) {
this.y = y;
}
}
public static Inner makeInner() {
return new Inner();
}
}
  • Add a public static method that returns a new instance of the inner class.
in = Outer.makeInner();
in.getClass().toString()
ans =
class Outer$Inner
  • Use java.lang.Class.getClasses().
%%Create an Instance;
out = Outer();
%%Create a Class object
oc = out.getClass();
%%Create a Class[] containing all the public classes defined within Outer.
oc_public = oc.getClasses();
%%Class object for Outer.Inner
inner_class = oc_public(1);
%%Call a zero argument constructor
in1 = inner_class.newInstance();
%%Call a constructor with arguments
types = javaArray('java.lang.Class',1);
types(1) = java.lang.Integer.TYPE;
in2 = inner_class.getConstructor(types).newInstance(int32(5));

  0 Comments

Sign in to comment.

More Answers (0)

Products


Release

R2011b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!