2016-09-29 55 views
-4

请参见下面的代码,并说我什么是输精管。爪哇 - 声明类和类对象之间的差异和(级VS级)

public class c1 
{ 
    //.... 
} 

Class c2 = obj.getClass(); 

Object o1 = new c1(); 
Object o2 = new c2(); // <<----- here 

什么错了最后一行???

我怎样才能创建C2的对象????

编辑:

int[] s1 = new int[]{4,5,6}; 
char[] s2 = new char[]{'a'.'b'}; 

Integer[] new = convertPrimitiveArrayToObject(new Object[]{s1}); 
Character[] new = convertPrimitiveArrayToObject(new Object[]{s2}); 


public static <T> T[] convertPrimitiveArrayToObject(Object[] primitive) 
    { 
      Object x = primitive[0]; 
      Class type = x.getClass().getComponentType(); // => int OR char 
      type[] x2 = (type[]) x;   // I need to convert array to (int/char/...) 

     //...... 
    } 
+0

你期待能够为'新c2'后你'obj.getClass()'? – ChiefTwoPencils

+0

'c2'不是班级。它是Class类型的一个对象。 – Batty

+0

对于参数'Object [] primitive',您不能传递任何'int []'或'char []'数组。也许你应该提供一个你想要实现的例子。 – SubOptimal

回答

0
Object o2 = (C1) c2.newInstance(); 
+0

否否,C1只是一个样品。 –

1

你需要使用反射,首先阅读Java反射

这将帮助你 Creating New Class Instances

创建对象

Object object = null; 
    try { 
     Class clazz = Class.forName("yor fully qualified class name"); 
     object = clazz.newInstance(); 
    } catch (InstantiationException e) { 
     System.out.println(e); 
    } catch (IllegalAccessException e) { 
     System.out.println(e); 
    } catch (ClassNotFoundException e) { 
     System.out.println(e); 
    } 
+0

我抱歉我Iranian.in伊朗不能访问这个网站,这个网站禁止我的国家,请大家帮我 –

+0

不,我不需要新的实例,我想转换一个数组,它是一个对象内部的数组,但我不知道该数组的类,我的方法获取(接收)(int,char,boolean,long和其他基元作为数组)在一个对象内 –