现在的位置: 首页 > 综合 > 正文

近期 有关于一些问题的解答

2013年07月11日 ⁄ 综合 ⁄ 共 1418字 ⁄ 字号 评论关闭

1. java 中不能new 接口

其实是可以new 的,可以new 个匿名内部类,从一定程度上说也是new 接口形式

例如:InterfaceA a = new InterfaceA(){

  @override

   public void func(){

}; 

2. 泛型

 泛型类可以看作类的工厂。对于泛型有一个类型变量<T>,分为泛型类,和泛型方法。

泛型类 

public class Pair<T> {

private T first;
private T second;
public T getFirst() {
return first;
}
public void setFirst(T first) {
this.first = first;
}
public T getSecond() {
return second;
}
public void setSecond(T second) {
this.second = second;
}

 泛型方法

public class ArrayAlg {
public <T> T getMiddle(T[] a){
return a[a.length/2];
}
public static void main(String[] args){
ArrayAlg alg = new ArrayAlg();
System.out.println(alg.getMiddle(new String[]{"1", "2", "3"}));
}
public static<T extends Comparable<T>> T min(T[] a){
T smallesT = a[0];
for (T t : a) {
if(t.compareTo(smallesT) > 0){
  //
}
}
return smallesT;
}
}

 

3,JAVA代理

 //通过代理类动态的生成一个对象,这个类实现了特定的接口,调用都委托到Handler中真正实现中

//也就是说java代理类实现了,在运行时能够通过接口来动态的生成一个实现该接口的类对象
public class Proxy extends AbstractProxy {
public Object getProxy(Handler handler, Class[] interfaces){
this.handler = handler;
return null;
}

} 

 

public class AbstractProxy {
protected Handler handler;
}
import java.lang.reflect.Method;
public class Handler {
private Object target;
public Handler(Object obj){
this.target = obj;
}
public Object invoke(Object proxy, Method method, Object... params){
if(method.getName().equals("test")){
System.out.println("");
//return target.test();
}
return "";
}

}

 

4,ssh层中如果不用接口就无法使用spring的AOP功能?

Spring 缺省使用J2SE 动态代理(dynamic proxies ) 来作为AOP 的代理。这样任何接口都可以被代理。

Spring 也支持使用CGLIB 代理对于需要代理类而不是代理接口的时候CGLIB 代理是很有必要的。 如果一个业务对象并没有实现一个接口,默认就会使用CGLIB 。

 

 

 

抱歉!评论已关闭.