最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
赤峰市| 中阳县| 嘉峪关市| 沾益县| 浦东新区| 凉城县| 新疆| 陵水| 乾安县| 巴楚县| 金坛市| 太仆寺旗| 晋州市| 西和县| 环江| 西盟| 尉犁县| 吴忠市| 湾仔区| 家居| 阳江市| 漳浦县| 扎赉特旗| 凤阳县| 华宁县| 玉田县| 监利县| 肃宁县| 饶平县| 廊坊市| 乌拉特前旗| 辽宁省| 通江县| 平陆县| 揭东县| 蓝山县| 酉阳| 迭部县| 昭觉县| 三江| 布拖县|