effective java
1.考虑用静态工厂方法代替构造函数
对于一个类,为了让客户获得他的一个实例,最通常的方法是提供一个共有的构造函数。
实际上还有另外一种技术,尽管较少为人所知,但也应该成为每个程序员的工具箱中的一
部分,类可以提供一个公有的 静态工厂方法 。所谓静态工厂方法,实际上只是一个简单
的静态方法,他返回的是类的一个实例。
类可以提供一些静态工厂方法...
分类:
编程语言 时间:
2014-06-05 11:47:22
阅读次数:
337
条款35 placement new
直接调用构造函数是行不通的,然而可以通过使用placement new来哄骗编译器调用构造函数:
void *operatornew(size_t, void* p) throw()
{ return p;}
placement new是operator new的一个标准的重载版本,也位于全局名字空间中,但和我们通常看到的operator new不同,...
分类:
编程语言 时间:
2014-06-05 09:20:32
阅读次数:
315
看下ThreadPoolImpl的构造函数:
/**
* This constructor is used to create an unbounded threadpool
*/
public ThreadPoolImpl(ThreadGroup tg, String threadpoolName) {
inactivityTimeout = ORB...
分类:
其他好文 时间:
2014-06-05 07:41:45
阅读次数:
386
对于普通的类而言,可以放在初始化块中的初始化工作其实完全可以放到构造函数中进行,只不过有时会带来些许不便,如有多个构造器,就要在多个地方加上初始化函数完成初始化工作,而如果放到初始化块中的话则只要写一次即可。显然,使用初始化块的代码比不使用初始化块的代码要更简洁。但是,如果只是这一点便利的话,还不足以使用初始化块,其实初始化块真正体现其独一无二的作用是在匿名内部类中,由于是匿名内部类,因而无法写构造方法,但是很多时候还是要完成相应的初始化工作,这时就需要用到初始化块了,特别是Android中大量地使用匿名内...
分类:
编程语言 时间:
2014-06-05 05:08:50
阅读次数:
315
C++11中的初始化列表构造函数(Initialize_list Constructors)是将std::initializer_list作为第一个参数的构造函数,并且没有任何其他参数(或者其他参数具有默认值)。例如:
#include
#include //必须包含该头文件
#include
using namespace std;
class A
{
private:
vector m...
分类:
编程语言 时间:
2014-06-05 03:32:22
阅读次数:
287
在构造体内初始化数据成员是最常见的方法。
例如:
#include
using namespace std;
class A
{
private:
int i;
string s;
public:
A(int ii,string ss){
//在构造函数体内初始化数据成员
i=ii;
s=ss;
cout<<"ctor:i="<<i<<",s="<<s<<endl;
...
分类:
编程语言 时间:
2014-06-05 01:00:02
阅读次数:
219
1: Java中浅拷贝和深拷贝的定义:
浅拷贝:就是指两个对象共同拥有同一个值,一个对象改变了该值,也会影响到另一个对象。
深拷贝:就是两个对象的值相等,但是互相独立。
(深拷贝才是真正的拷贝,浅拷贝只是将引用指向了同一份对象)
2:Java中几种常见的拷贝操作:
(1)“=”操作:也就是赋值操作;
(2)拷贝构造函数:拷贝构造函数就是构造函数的参数的类型是该构造...
分类:
编程语言 时间:
2014-06-04 22:54:51
阅读次数:
328
当为一个类实现自己的构造函数,相关赋值函数,析构函数,则必须有责任对类中的每一个成员进行初始化、赋值、释放。因此:如果为一个类添加一个成员,就必须同时相应修改上面几类函数。...
分类:
其他好文 时间:
2014-06-04 22:37:12
阅读次数:
262
package com.sondon.dhjk.test;
import com.sondon.dhjk.utils.LogUtil;
import junit.framework.TestCase;
public class Test extends TestCase {
private static final String TAG = "Test";
/**
* 构造函数
...
分类:
移动开发 时间:
2014-05-31 17:34:48
阅读次数:
251
/*** 下面演示了通过原型的创建方式,使用基于原型的创建能够将属性和方法*
设置为Person专有的,不能通过window来调用。* 原型是javascript中的一个特殊对象,当一个函数创建之后,会随之就产生一个原型对象*
当通过这个这个函数的构造函数创建了一个详细的对象之后,在这个详细的对象中...
分类:
Web程序 时间:
2014-05-31 06:35:55
阅读次数:
301