五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java反射:賦值,設(shè)置,通過(guò)反射調(diào)用getter和setter方法,Tools類(lèi)【詩(shī)書(shū)畫(huà)唱】

2020-09-01 08:34 作者:詩(shī)書(shū)畫(huà)唱  | 我要投稿

Class.forName()加載類(lèi)

getDeclaredMethod


自己總結(jié)的語(yǔ)法或重要提醒內(nèi)容等:

// 自己總結(jié)的語(yǔ)法(多記錄自己總結(jié)的語(yǔ)法,之后用等):

// 當(dāng)setXXX等的方法有一個(gè)參數(shù)時(shí)

//

// setDeclaredMethod("setXXX",包裝類(lèi)類(lèi)型名.class)






1、創(chuàng)建Product商品類(lèi),包含商品名稱(chēng)name和商品價(jià)格price兩個(gè)屬性以及getter和setter,通過(guò)反射調(diào)用Product的getter和setter方法,設(shè)置商品名稱(chēng)是衛(wèi)龍辣條,價(jià)格是6.5并打印出來(lái)。





//每個(gè)類(lèi)沒(méi)寫(xiě)東西時(shí),有一個(gè)默認(rèn)的構(gòu)造方法

//(當(dāng)寫(xiě)了自己建的構(gòu)造方法時(shí),默認(rèn)構(gòu)造方法就沒(méi)有)

package ClassfanShe;

//下面的class前不可加public等

class Product {

String name;

// 下面的price等前面不可以用double,最好都用包裝類(lèi)Double等:

Double price;



public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Double getPrice() {

return price;

}

public void setPrice(Double price) {

this.price = price;

}



}



package ClassfanShe;

import java.io.IOException;

import java.io.InputStream;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.Properties;


public class PsetGet {


public static void main(String[] args) {

// TODO Auto-generated method stub


try {

Class c = Class.forName("ClassfanShe.Product");


Object nameSet = c.newInstance();

//? 用getDeclaredMethod獲取到setXXX方法:

Method Method1 = c.getDeclaredMethod("setName",String.class);

// 用invoke調(diào)用getXXX方法:


Method1.invoke(nameSet, "衛(wèi)龍辣條");

?


// 用getDeclaredMethod獲取getXXX方法

Method Method2 = c.getDeclaredMethod("getName");

Object nameGet = Method2.invoke(nameSet);

?

?

System.out.println((String)nameGet);

//——————————

// 自己總結(jié)的語(yǔ)法(多記錄自己總結(jié)的語(yǔ)法,之后用等):

// 當(dāng)setXXX等的方法有一個(gè)參數(shù)時(shí)

//

// setDeclaredMethod("setXXX",包裝類(lèi)類(lèi)型名.class)

?

Method Method11 = c.getDeclaredMethod("setPrice", Double.class);

Object priceSet = c.newInstance();

Method11.invoke(priceSet, 6.5);


Method Method22 = c.getDeclaredMethod("getPrice");

Object priceGet = Method22.invoke(priceSet);

System.out.println(priceGet);

// ——————————

System.out.println("商品名稱(chēng)是"+nameGet+",價(jià)格是"+priceGet+"元");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}



2、定義一個(gè)類(lèi)Person,包含屬性name、age。使用反射的方式創(chuàng)建一個(gè)實(shí)例、使用反射方式給name和age屬性賦值為小明和18歲。

package ClassfanShe;


public class Person {

String name;

Integer age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

}

package ClassfanShe;

import java.io.IOException;

import java.io.InputStream;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.Properties;


public class PersonFS {


public static void main(String[] args) {

// TODO Auto-generated method stub


try {

Class c = Class.forName("ClassfanShe.Person");


Object nameSet = c.newInstance();


Method Method1 = c.getDeclaredMethod("setName",String.class);



Method1.invoke(nameSet, "小明");

?



Method Method2 = c.getDeclaredMethod("getName");

Object nameGet = Method2.invoke(nameSet);

?

// ——————————

?

Method Method11 = c.getDeclaredMethod("setAge", Integer.class);

Object ageSet = c.newInstance();

Method11.invoke(ageSet, 18);


Method Method22 = c.getDeclaredMethod("getAge");

Object ageGet = Method22.invoke(ageSet);


// ——————————

System.out.println("詩(shī)書(shū)畫(huà)唱告訴你,此人為"+nameGet

+",年齡為"+ageGet+"歲");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}





3、創(chuàng)建一個(gè)Tools類(lèi),定義一個(gè)帶兩個(gè)Integer類(lèi)型參數(shù)的add方法,返回值是這兩個(gè)參數(shù)的和,通過(guò)反射調(diào)用這個(gè)方法,并打印出結(jié)果。

上面的類(lèi)中再定義一個(gè)方法,此方法可以獲取obj對(duì)象中名為propertyName的屬性的值(個(gè)人理解:就是屬性名,取名不一定為propertyName)。

上面的類(lèi)中再定義一個(gè)方法,此方法可將obj對(duì)象中名為propertyName的屬性的值(個(gè)人理解:就是屬性名,取名不一定為propertyName)設(shè)置為value.


下面提供參考,不一定要用:

public class Tools {

? ? public void setProp(Student obj,String propName,Object value){

? ? //..?

? ? }

? ??

? ? public static void main(String[] args) {

? ? Tools t = new Tools();

? ? Student s = new Student();

? ? t.setProp(s, "name","李四");

? ? t.setProp(s, "age",12);

}

}

package ClassfanShe;


public class Student {

String propertyName;

Integer age;

}

package ClassfanShe;


class Tools {

Integer a;

Integer b;

private Student obj;

private String propName;

private Object value;

public int add(Integer a,Integer b) {

return a + b;

}



public? String setProp(Student obj,String propName,Object value){



return propName;

? ? }


public? Object setProp(Student obj,Object propName,Object value){



return propName=value;

? ? }


}



package ClassfanShe;

import java.io.IOException;

import java.io.InputStream;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.Properties;


public class ToolsFS {


public static void main(String[] args) {

try {


System.out.println("下面是調(diào)用獲取屬性名字的方法:");

Class c = Class.forName("ClassfanShe.Tools");


Object nameSet = c.newInstance();


Method Method1 = c.getDeclaredMethod("setProp",

Student.class,String.class,Object.class);




Tools t = new Tools();


Student s = new Student();


//t.setProp(s, "name","李四");

//

//t.setProp(s, "age",12);


System.out.println("1:"+?

Method1.invoke(nameSet, s, "name","李四")+"\n");?


System.out.println("2:"+?

Method1.invoke(nameSet, s, "age",12)+"\n");?



System.out.println("將obj對(duì)象中名為"

+ "屬性名設(shè)置為value并且返回出來(lái):");



Method Method11 = c.getDeclaredMethod("setProp",

Student.class,Object.class,Object.class);





System.out.println("1:"+?

Method11.invoke(nameSet, s, "name","李四")+"\n");?


System.out.println("2:"+?

Method11.invoke(nameSet, s, "age",12)+"\n");?

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}


package ClassfanShe;

import java.io.IOException;

import java.io.InputStream;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

import java.util.Properties;


public class TwoFS {


public static void main(String[] args) {

try {


System.out.println("下面是調(diào)用add方法:");

Class c = Class.forName("ClassfanShe.Tools");


Object nameSet = c.newInstance();


Method Method1 = c.getDeclaredMethod("add",

Integer.class,Integer.class);




?


System.out.println("1+2="+ Method1.invoke(nameSet, 1,2)+"\n");?



} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}

后記

每次寫(xiě)代碼等最好是總結(jié)一些重點(diǎn)代碼單詞或自己總結(jié)的語(yǔ)法或自己的理解來(lái)記憶,別的方面也要自己學(xué)會(huì)總結(jié)一些自己認(rèn)為重要的內(nèi)容。

自己認(rèn)為常用的,用處大等的就是我所認(rèn)為重要的。


Java反射:賦值,設(shè)置,通過(guò)反射調(diào)用getter和setter方法,Tools類(lèi)【詩(shī)書(shū)畫(huà)唱】的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
武陟县| 榆中县| 巴彦县| 古田县| 无为县| 肇庆市| 蕲春县| 夹江县| 莱州市| 丹巴县| 始兴县| 凤台县| 青岛市| 东丽区| 湘潭市| 甘南县| 体育| 隆安县| 菏泽市| 德惠市| 武冈市| 宝兴县| 洪湖市| 昭通市| 南京市| 定南县| 定远县| 略阳县| 天等县| 内丘县| 碌曲县| 闸北区| 施甸县| 中山市| 尖扎县| 乌兰察布市| 兰州市| 桦甸市| 阜阳市| 大姚县| 康乐县|