What has to happen is you need a Class.forName or however you are trying to load the class into the clasloader. Then afterward you instanstiate an Array of that class type by using java.lang.reflect.Array.newInstance(class, x) where x is your dimensions. So to answer your question it uses a java.lang.Class.
-----Original Message----- From: Jason Dillon [mailto:[EMAIL PROTECTED]] Sent: Monday, 25 February 2002 12:27 To: Dean Jennings Cc: 'Dain Sundstrom'; JBoss-dev Subject: Re: [JBoss-dev] Loading array class object by name Oh ya... can you load java.lang.Object or java.lang.Class? If so then there shouldn't be a cl issue. --jason Dean Jennings wrote: >try java.lang.reflect.Array class. On it is a newInstance Method which take >a class type. > >-----Original Message----- >From: Dain Sundstrom [mailto:[EMAIL PROTECTED]] >Sent: Monday, 25 February 2002 12:09 >To: Jason Dillon >Cc: JBoss-dev >Subject: Re: [JBoss-dev] Loading array class object by name > > >Doesn't work. I tried [Ljava/lang/Object; and both without the semicolon. > >-dain > >Jason Dillon wrote: > >>Try loading "[Ljava.lang.Object;" instead... which is the class name >>returned from Object[].class.getName(); >> >>--jason >> >> >>Dain Sundstrom wrote: >> >>> >>>Jason Dillon wrote: >>> >>>>What is the value for name you are using? >>>> >>> >>> >>> >>>In my test code "java.lang.Object[]" >>> >>> >>>>Why not just use Class.class? >>>> >>> >>> >>> >>>Because I am trying to load a parameter type from an xml file that >>> >>>just has the string name of the type. >>> >>> >>> >>>>Or if you really want to use Class.forName to load Class, then you >>>>should be able to use the system class loader. >>>> >>> >>> >>>>Is this after yesterdays Server/ServerLoader change? >>>> >>> >>> >>> >>>No new feature. Class.forName docs say you can load arrays but it is >>>broken. Here is the code I use now: >>> >>>private Class convertToJavaClass(String name) throws >>>DeploymentException { >>> // Check primitive first >>> for (int i = 0; i < PRIMITIVES.length; i++) { >>> if(name.equals(PRIMITIVES[i])) { >>> return PRIMITIVE_CLASSES[i]; >>> } >>> } >>> >>> int arraySize = 0; >>> while(name.endsWith("[]")) { >>> name = name.substring(0, name.length()-2); >>> arraySize++; >>> } >>> >>> try { >>> // get the base class >>> Class c = entity.getClassLoader().loadClass(name); >>> >>> // if we have an array get the array class >>> if(arraySize > 0) { >>> int[] dimensions = new int[arraySize]; >>> for(int i=0; i<arraySize; i++) { >>> dimensions[i]=1; >>> } >>> c = Array.newInstance(c, dimensions).getClass(); >>> } >>> >>> return c; >>> } catch(ClassNotFoundException e) { >>> throw new DeploymentException("Parameter class not found: " + >>> name); >>> } >>>} >>> >>>This is lame but works. >>> >>>-dain >>> >> >> > > > >_______________________________________________ >Jboss-development mailing list >[EMAIL PROTECTED] >https://lists.sourceforge.net/lists/listinfo/jboss-development > _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development _______________________________________________ Jboss-development mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/jboss-development