问题描述
- java中如何理解这种初始化类实例的方式,我只懂new的方式
-
java中public boolean setViewValue(Viewarg0,Object arg1){ImageView imageView =(ImageView)arg0
Bitmap bitmap=(Bitmap)arg1}如何理解这种初始化类实例的方式,我只懂new的方式
解决方案
这种构造方法是将 依赖的成员对象作为构造函数的参数传进入来的,而传人时还是需要new的啊。
解决方案二:
这没有什么别的,只是arg1的初始化放在了函数的外部。比如
Bitmap bmp = new Bitmap();
setViewValue(viewarg0, bmp);
这样在函数内看不到new而已。
解决方案三:
1、变量arg0在传入setViewValue()方法之前,实际上也执行了类的构造方法,在堆内存中new了一个对象(假设为X),arg0引用了X,arg0实际上在栈内存中。
2、当执行了下述代码后,并没有重新new一个新的对象,而是在栈内存中创建了一个imageView变量,它也指向X。
ImageView imageView =(ImageView)arg0;
3、所以,只创建了一个对象X,但是有两个变量引用X,两个变量都可以操作X,并且一个变量操作X后,会影响另一个变量的访问X的结果。
解决方案四:
可以这样理解:arg0和arg1对应的对象在这个方法外部被创建出来,然后它们两个被当作方法的参数传递到这个方法中。
然后在这个方法里,定义imageView ,将arg0赋值给它;定义了bitmap,将arg1赋值给它。(真实是,imageView指向arg0对应对象的堆内存,bitmap指向arg1对应对象的堆内存。imageView和arg0对应同一个对象,bitmap和arg1对应同一个对象。)
你所想要问的,有几种创建对象的方式:
Java中创建对象的四种方法 收藏Java中创建对象的四种方式
1.用new语句创建对象,这是最常见的创建对象的方法。
2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
3.调用对象的clone()方法。
4.运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
第一种最常见
解决方案五:
这是将传入的参数转换一个,实际上外部调用了new了
解决方案六:
初始化类,就是创建一个类的对象,通过new,来调用类的默认的构造函数,来初始化类。
解决方案七:
此去只是设置值的方法。初始化实例一般是执行构造函数。set函数一般是自己创建来设置初值(或值)的