黑马程序员_java基础加强(二)

JavaBean

    JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。
    一个类被当作javaBean使用时,JavaBean的属性是根据方法名推断出来的,它根本看不到java类内部的成员变量。
    如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称之为值对象。
  

    以下是javabean内省的例子:

   

public class ReflectIntroSpector2{

public static void main(String args[])throws Exception{

Person person = new Person("王强",10);

//利用javabean得到一个名字

String name ="name";

Object retVal = getProperty(person,name);

System.out.println(retVal);

 

//利用JavaBean设置一个值

Object value = "王小强";

setProperty(person,name,value);

System.out.println(person.getName());

}

private static Object getProperty(Object obj,String name)throws Exception{

    //获取传过来对象的传过来的值

    //第一个参数是属性名,第二个参数是要当做JavaBean的类

PropertyDescriptor pd =  new PropertyDescriptor(name,obj.getClass());

Method methodGet= pd.getReadMethod();

//调用对象的get方法

Object object = methodGet.invoke(obj, null);

//返回得到的值

return object;

}

private static void setProperty(Object obj,String name,Object value)throws Exception{

PropertyDescriptor pd =

         new PropertyDescriptor(name,obj.getClass());

//得到set方法

Method methodSet = pd.getWriteMethod();

//执行set方法

methodSet.invoke(obj,value);

}

}

class Person {

private String name;

private int age;

 

public Person(String name,int age){

this.name=name;

this.age=age;

}

 

    public String getName() {

        return name;

    }

 

    public void setName(String name) {

        this.name = name;

    }

 

    public int getAge() {

        return age;

    }

 

    public void setAge(int age) {

        this.age = age;

    }

} 
注解

  1. 概述:注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记

  2. 自带的三种注解的作用

    @Deprecated 声明方法已过时

    @SuppressWarnings  取消编译器警告

    @Override 声明方法是继承自父类

    public class Test {

    //提醒编译器跳过过时方法提醒。

    @SuppressWarnings("deprecation")

    public static void main(String[] args) {

    System.runFinalizersOnExit(true);

    }

    //提醒该方法过时了

    @Deprecated

    public static void timeOut(){

    System.out.println("timeOut");

    }

    //编译时提醒是否覆盖了父类方法

    @Override

    public String toString() {

    return "nihao";

    }

    泛型

    限定集合中的输入类型,让编译器挡住源程序中的非法输入。

    使用泛型集合,可以将一个集合中的元素限定为一个特定类型,集合中只能存储同一个类型的对象;

    编译器也不需要对对象进行强制类型转换;

    在对泛型类型进行参数化时,类型参数的实例必须是引用类型,不能是基本类型。

    当一个变量被声明为泛型时,只能被实例变量、方法和内部类调用,而不能被静态变量和静态方法调用。因为静态成员是被所有参数化的类所共享的,所以静态成员不应该有类级别的类型参数。

               例子:
class hello<T, V> {
    hello(){
 
    }
 
    public T getName(){
        return name;
    }
 
    public void setName(T name){
        this.name = name;
    }
 
    public V getAge(){
        return age;
    }
 
    public void setAge(V age){
        this.age = age;
    }
 
    private T name;
    private V age;
 
    public static void main(String[] args){
        hello<String, Integer> he = new hello<String, Integer>();
        he.setAge(10);
        he.setName("Rollen Holt");
        System.out.println(he.getName() + "   " + he.getAge());
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值