androidAndroid技术知识Android开发

大厂Android面试题汇总(二)JAVA源码级

2018-04-12  本文已影响11人  我的天呐0_0
invoke(Object proxy, Method method, Object[] args) throws Throwable {
        method.invoke(实例, args);
        return null;
    }

4,获得代理类Proxy.newProxyInstance(ClassLoader loader,Class<?>[] interfaces, InvocationHandler h),执行接口方法。
轻松学,Java 中的代理模式及动态代理

比较的是key的equals
深入解析Java对象的hashCode和hashCode在HashMap的底层数据结构的应用

File aFile=new File("e:\\c.txt");  
   Stu a=new Stu(1, "aa", "1");  
   FileOutputStream fileOutputStream=null;  
   try {  
     fileOutputStream = new FileOutputStream(aFile);  
     ObjectOutputStream objectOutputStream=new ObjectOutputStream(fileOutputStream);  
     objectOutputStream.writeObject(a);  
     objectOutputStream.flush();  
     objectOutputStream.close();  
   } catch (FileNotFoundException e) {  
     e.printStackTrace();  
   } catch (IOException e) {  
     e.printStackTrace();  
   }finally {  
     if(fileOutputStream!=null)  
     {  
       try {  
         fileOutputStream.close();  
       } catch (IOException e) {  
         // TODO Auto-generated catch block  
         e.printStackTrace();  
       }        
     }  
   }  
FileInputStream fileInputStream=new FileInputStream(aFile);  
ObjectInputStream objectInputStream=new ObjectInputStream(fileInputStream);  
Stu s=(Stu)objectInputStream.readObject();  
System.out.println(s);  
//获取String所对应的Class对象
Class<?> c = String.class;
//获取String类带一个String参数的构造器
Constructor constructor = c.getConstructor(String.class);
//根据构造器创建实例
Object obj = constructor.newInstance("23333");

获取方法
1,getDeclaredMethods()方法返回类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
2,getMethods()方法返回某个类的所有公用(public)方法,包括其继承类的公用方法。
3,getMethod方法返回一个特定的方法,其中第一个参数为方法名称,后面的
参数为方法的参数对应Class的对象
获取属性
1,getFiled: 访问公有的成员变量
2,getDeclaredField:所有已声明的成员变量。但不能得到其父类的成员变量
3,getFileds和getDeclaredFields用法同上
使用方法
invoke()方法来调用这个方法。参数:对象实例,参数...
深入解析Java反射

泛型类
public class Generic<T>{ 
    //key这个成员变量的类型为T,T的类型由外部指定  
    private T key;

    public Generic(T key) { //泛型构造方法形参key的类型也为T,T的类型由外部指定
        this.key = key;
    }

    public T getKey(){ //泛型方法getKey的返回值类型为T,T的类型由外部指定
        return key;
    }
}
泛型接口
public interface Generator<T> {
    public T next();
}
泛型方法
/** 
     * 这才是一个真正的泛型方法。
     * 首先在public与返回值之间的<T>必不可少,这表明这是一个泛型方法,并且声明了一个泛型T
     * 这个T可以出现在这个泛型方法的任意位置.
     * 泛型的数量也可以为任意多个 
     *    如:public <T,K> K showKeyName(Generic<T> container){
     *        ...
     *        }
     */
    public <T extends Number> T showKeyName(Generic<T> container){
        System.out.println("container key :" + container.getKey());
        //当然这个例子举的不太合适,只是为了说明泛型方法的特性。
        T test = container.getKey();
        return test;
    }

java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

问题来自:AWeiLoveAndroid的博客

上一篇 下一篇

猜你喜欢

热点阅读