java比较陌生的语法

一、      Java并没有虚构函数,但是有finalize()方法,它被声明为protected,finalize()会在对象被回收是执行,但不可以将它当做析构函数用,因为不知道对戏那个资源合适被回收,所以也不知道finalize()真正被执行的时间,也就无法立即执行所指定的资源回收动作。

    如果确定不再使用某个对象,可以在参考至该对象的名称上指定null,表示这个名称不再参考至任何对象,不被任何名称参考的对象将会被回收资源,可以使用System.gc()建议程序进行垃圾手机,如果建议被采纳,则对象资源会被回收,回收前执行finalize()方法。

下面是测试的源代码:

package com.hewen;

public class GcTest {
private String name;
public GcTest(String name){
	this.name=name;
	System.out.println(name+"建立");
}
//对象回收前执行
protected void finalize(){
	System.out.println(name+"被回收");
}
}

 

package com.hewen;

public class UseGc {
public static void main(String[] args){
	GcTest ob1=new GcTest("obj1");
	GcTest ob2=new GcTest("obj2");
	GcTest ob3=new GcTest("obj3");
	
	ob1=null;
	ob2=null;
	ob3=null;
	//建议回收对象
	System.gc();
}
}

 二、Object clone方法,他是浅复制不是甚复制该类要进行复制对象必须实现Cloneable接口,在用super.clone()调用

三、内嵌类:

四、定义泛型类,如果有多个不确定的类型,只需在定义类的时候写上XXClass<T1,T2,...,Tn>,

下面是测试的源代码:

package com.hewen;

public class GenericFoo<T> {
	private T foo;

	public void setFoo(T foo) {
		this.foo = foo;
	}

	public T getFoo() {
		return foo;
	}
}

 

package com.hewen;

public class TestGeneric {
 public static void main(String[] args){
	 GenericFoo<Boolean> foo1=new GenericFoo<Boolean>();
	 GenericFoo<Integer> foo2=new GenericFoo<Integer>();
	 //这样在定义对象的时候就确定了泛型类类型持有者T真正的类型,但是用Object
	 //类型需要装换,这样可以避免程序员在转型的时候类型写错,会出现ClassCastException
 }
}

4.1 泛型还可以限制可用的类型

可以在定义类型持有者时,同时使用extends指定这个类型持有者实例化,

实例化的对象必须是扩充自某个类型或者实现的某个接口,如:

定义类ListGenericFoo<T extends List>,这样实例化 这个类时必须是实现java.util.List接口的类

此时还可以要求更加严格一点如:ListGenericFoo<T extends List<String>>

4.2 使用通配符?

比如一个方法需要注入的方法是一个类型,但是这个类型是变化的如:

public void showFoo(GenericFoo<? extends String> foo)

这就是针对String或其子类而定制的内容,

如果不适用extends,则默认是允许Object及其下的子类

使用通配符声明对象与没有适用通配符的区别?

通过使用通配符声明的名称所参考的对象,您没有办法在对它的添加新的信息,您只能去的他当众的信息或是移出当中的信息

4.3 泛型的继承与接口的实现规则

如:GenericFood<T1,T2>父类,子类必须是SubGenericFood<T1,T2,T3> extends GenericFood<T1,T2>

interface IFoo<T1,T2>

ConcreteFoo<T1,T2> implements IFoo<T1,T2>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值