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

Reply via email to