日期:2014-05-20  浏览次数:20827 次

关于类之间参数传递的问题 菜鸟请教大家
我有两个类 

第一个类里面有两个Sphere结构的参数 这两个参数将要传到第二个类里面去做运算

第一个类用class.forName和newInstance 来自动创建第二个类的实例 然后调用第二个类里面的processFrame方法

Java code

class TestFramework {

        .......... main()
        private static Sphere[] spheres;
        private static Sphere[] spheresBackup;

        String submissionName = args[0];
        Submission student =
                (Submission)Class.forName(submissionName).newInstance();

        ..........

        int[] studentResult = student.processFrame(x,y,z);



第二个类需要我自己写 因为第二个类需要用到x, y, z这三个参数 但是在Class.forName里面的newInstance里面没有传入x,y和z这三个参数 第二个类 是该怎样获得这些参数呢?


Java code

interface Submission {
        public int[] processFrame (double x,double y,double z) throws Exception;
}

class mySubmission implements Submission {
    
    //这里的构造方法应该怎样写才能获得TestFramework这个类的参数????
    
    public int[] processFrame( final double x,final double y,final double z) throws Exception {

    }
    
}




请大家尽量给一些代码 我刚开始学java 不是很厉害 谢谢大家



------解决方案--------------------
写错了
Java code

Class class = Class.forName(submissionName);
Constructor[] cons = class.getDeclaredConstructors();
if(cons[0].getParameterTypes().length>0){
    student = (Submission)cons[0].newInstance(new Object[]{new Integer(100),new Integer(200)});

}

------解决方案--------------------
探讨

Submission student =
(Submission)Class.forName(submissionName).newInstance();

干嘛要这么来实例化一个类呢?可以把第二个类写个带x、y、z的构造函数,最后在第一个类中直接new就可以了。搞那么复杂干嘛?

------解决方案--------------------
newInstance()只是生成实例
传参数是在调用方法int[] studentResult = student.processFrame(x,y,z);
的时候传递进去的,你不用管,写好processFrame里面的逻辑就行了