泛型通配符的扩展应用:
如Collection<?> 名字
?通配符可表示传入任何类型
使用?通配符可以引用其它各种参数化的类型,?通配符定义的的变量主要做引用可以调用与参数无关的
方法,不能调用与参数化有关的方法。
限定通配符的上边界:
正确的:如
Vector<? extends Number>x=new Vector<Integer>();
错误的:如
Vector<?extends Number>x=new Vector<String>();
限定通配符的下边界:
正确的:如
Vector<? Super Integer>x=new Vector<Number>();
错误的:如
Vector<?Super Integer>x=new Vector<Byte>();
限定通配符总是包括自己。
在JSP中常用SetMap集合进行迭代
<c:forEach items="${map}" var="entry">
${entry.key}:${entry.value}
<c:forEach>
自定义的泛型及应用
Java中的泛型类似于c++的模板但这种相似性仅限于表面。
不同类型时取其交集。
只有引用类型才能做泛型的参数。
除了在应用泛型时可以使用extends限定符
在定义泛型时可以使用extends限定符并且可以用&来指定多个边界。
另外异常也可以使用泛型。
在泛型中可以同时有多个类型参数在定义它们的类括号中使用逗号分开。
泛型方法应用实例:
如编写一个泛型方法自动将Object类型的对象转换成其它类型。
public static <T>autoConvert(Object obj)
{
return (T)obj;
}
一般来说通配符方案要比泛型方法更有效。
在J2EE中都是对数据库的操作:
C:增加create
R:查询Retrieve
U:更新Update
D:删除Delete
如果是泛型不能被静态变量和静态方法调用,因为静态成员是被所有参数化的类所共享的,所以静态成
员不应该有类级别的参数类型。
类中多个方法需要使用泛型时应该使用类别级的泛型。
类加载器:
加载类的工具
委托机制为了防止字节码的重复。
通常不可以自己写一个如Java.language.System,由于有委托机制,但自己可以写类加载器。
代理的概念与作用:
AOP(Aspect oriented program):面向方向的编程。
交叉业务的编程问题即为面向方向的编程,AOP的目标就是使用交叉业务模块化。
代理是实现AOP功能的核心和关键技术。
StringBuilder与StringBuffer的区别?
运用上基本一样。
都是动态的向字符串上添加内容。
但在单线程上StringBuilder效率高。
在多线程上StringBuffer效率高。
让JVM创建动态类及实例对象需要给它提供哪些信息。
1:成产的类中有哪些方法通过让其实现哪些接口的方式告知。
2:产生的类的字节码必须有一个关联的类加载器对象。
3:生成的类中的方法的代码是怎样的也由我们提供。
怎么把要执行的系统功能代码以参数形式提供?
1:把要执行的代码装到一个对象的某个方法里然后把该对象作为参数传递。
2:把目标对象也当做参数传递过去。
Spring的两大核心问题:
1:BeanFactory:Bean工厂
2:AOP框架