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

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

Java Web:Java.lang,反射調(diào)用,獲取類(lèi)的對(duì)應(yīng)的Class對(duì)象,屬性,構(gòu)造方法【詩(shī)書(shū)畫(huà)唱】

2020-12-30 23:09 作者:詩(shī)書(shū)畫(huà)唱  | 我要投稿



例子START

反射調(diào)用student中的方法對(duì)象start

import java.lang.reflect.Method;


public class Demo {


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

// TODO Auto-generated method stub

? ? ? ? //反射調(diào)用方法

Class cls = Class.forName("com.SSHC.bean.Student");

//通過(guò)反射創(chuàng)建一個(gè)Student對(duì)象

//Student s = new Student();

Object s = cls.newInstance();//類(lèi)型擦除

//獲取study方法對(duì)象

Method m1 = cls.getDeclaredMethod("study");

//反射調(diào)用

//s.study();

m1.invoke(s);


//獲取buy方法對(duì)象

//s.buy("西游記",88.0);

Method m2 = cls.getDeclaredMethod("buy"

, String.class, Double.class);

m2.invoke(s, "西游記", 88.0);


//獲取exam方法對(duì)象

Method m3 = cls.getDeclaredMethod("exam");

//Integer a = s.exam();

Object a = m3.invoke(s);

System.out.println(a);


//獲取help方法對(duì)象

Method m4 = cls.getDeclaredMethod("help", String.class);

//String str = s.help("紅樓夢(mèng)");

Object str = m4.invoke(s, "紅樓夢(mèng)");

System.out.println(str);

}


}

package com.SSHC.bean;


public class Student {

? ? private String name;

? ? private Integer age;

? ? private String sex;

? ? public Student(){

? ?

? ? }

? ? public Student(String n){

? ? this.name = n;

? ? }

? ? public Student(String n,Integer a){

? ? this.name = n;

? ? this.age = a;

? ? }

? ? //沒(méi)有參數(shù)沒(méi)有返回值的方法

? ? public void study(){

? ? System.out.println("正在學(xué)習(xí)");

? ? }

? ? //有參數(shù)沒(méi)有返回值的方法

? ? public void buy(String bname,Double price){

? ? System.out.println("買(mǎi)了一個(gè)書(shū),書(shū)名是:" + bname);

? ? }

? ? //沒(méi)有參數(shù)有返回值的方法

? ? public Integer exam(){

? ? return 98;

? ? }

? ? //有參數(shù)有返回值的方法

? ? public String help(String name){

? ? return "《" + name + "》";

? ? }

}



反射調(diào)用student中的方法對(duì)象end


輸入一個(gè)類(lèi)名,輸入一個(gè)方法名,反射調(diào)用方法(如eat方法) START



import java.lang.reflect.Method;


public class Tt {


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

// TODO Auto-generated method stub

? ? ? ? //輸入一個(gè)類(lèi)名,輸入一個(gè)方法名,反射調(diào)用方法

String methodName = "eat";

String clsName = "com.SSHC.bean.Dog";


Class cls = Class.forName(clsName);

//創(chuàng)建一個(gè)Student對(duì)象

Object stu = cls.newInstance();

//獲取方法對(duì)象

Method m = cls.getDeclaredMethod(methodName);

m.invoke(stu);

}


}


package com.SSHC.bean;


public class Dog {

? ? public void eat(){

? ? System.out.println("正在吃東西");

? ? }

}



輸入一個(gè)類(lèi)名,輸入一個(gè)方法名,反射調(diào)用方法END


獲取String類(lèi)中的所有的構(gòu)造方法START

package com.SSHC.bean;


public class Student {

? ? private String name;

? ? private Integer age;

? ? private String sex;

? ? public Student(){

? ?

? ? }

? ? public Student(String n){

? ? this.name = n;

? ? }

? ? public Student(String n,Integer a){

? ? this.name = n;

? ? this.age = a;

? ? }

? ? //沒(méi)有參數(shù)沒(méi)有返回值的方法

? ? public void study(){

? ? System.out.println("正在學(xué)習(xí)");

? ? }

? ? //有參數(shù)沒(méi)有返回值的方法

? ? public void buy(String bname,Double price){

? ? System.out.println("買(mǎi)了一個(gè)書(shū),書(shū)名是:" + bname);

? ? }

? ? //沒(méi)有參數(shù)有返回值的方法

? ? public Integer exam(){

? ? return 98;

? ? }

? ? //有參數(shù)有返回值的方法

? ? public String help(String name){

? ? return "《" + name + "》";

? ? }

}


package TEXT;


import java.lang.reflect.Constructor;

import java.lang.reflect.Field;

import java.lang.reflect.Method;


public class Test {


public static void main(String[] args) {

// TODO Auto-generated method stub

? ? ? ? //獲取Student類(lèi)的對(duì)應(yīng)的Class對(duì)象

// Student s = new Student();

// //方法一:

// Class c1 = s.getClass();

// //方法二:

// Class c2 = Student.class;

//方法三:

try {

Class c3 = Class.forName("com.SSHC.bean.Student");

//通過(guò)反射獲取指定類(lèi)的所有屬性Field

Field[]fs = c3.getDeclaredFields();

// for(int i = 0;i < fs.length;i ++) {

// //取出每個(gè)屬性

// Field f = fs[i];

// //獲取每個(gè)屬性的名和類(lèi)型

// String fn = f.getName();

// System.out.println(fn);

// Class ft = f.getType();

// System.out.println(ft.getName());

// }


//java.util.Date類(lèi)有哪些屬性

// Class c = Class.forName("java.util.Date");

// Field[]f1 = c.getDeclaredFields();

// for(int i = 0;i < f1.length;i ++) {

// Field f = f1[i];

// System.out.println(f.getName());

// Class ft = f.getType();

// System.out.println(ft.getName());

// }


//獲取Student類(lèi)中的所有方法Method

// Method[]ms = c3.getDeclaredMethods();

// for(int i = 0;i < ms.length;i ++) {

// //獲取類(lèi)中的每個(gè)方法

// Method m = ms[i];

// //獲取方法名

// String mn = m.getName();

// System.out.println(mn);

// //獲取返回類(lèi)型

// Class mc = m.getReturnType();

// //System.out.println(mc.getName());

// //方法參數(shù)列表的類(lèi)型

// Class[]mps = m.getParameterTypes();

// for(int j = 0;j < mps.length;j ++) {

// //取出每個(gè)方法中的單個(gè)參數(shù)

// Class mpc = mps[j];

// System.out.println("參數(shù)類(lèi)型是:" + mpc.getName());

// }

// }


//獲取Student類(lèi)中所有的構(gòu)造方法Constructor

// Constructor[]cs = c3.getDeclaredConstructors();

// for(int i = 0;i < cs.length;i ++) {

// //獲取每個(gè)構(gòu)造方法

// Constructor ct = cs[i];

// //獲取構(gòu)造方法的參數(shù)類(lèi)型

// Class[]cfs = ct.getParameterTypes();

// System.out.println("第" + i + "個(gè)構(gòu)造方法的參數(shù)列表:");

// for(int j = 0;j < cfs.length;j ++) {

// Class cc = cfs[j];

// System.out.println(cc.getName());

// }

// }

//獲取String類(lèi)中的所有的構(gòu)造方法

Class ck = Class.forName("java.lang.String");

Constructor []cks = ck.getDeclaredConstructors();

for(int i = 0;i < cks.length;i ++) {

Constructor ct = cks[i];

System.out.println("第" + (i + 1) + "個(gè)構(gòu)造方法的參數(shù):");

Class[]cfs = ct.getParameterTypes();

for(int j = 0;j < cfs.length;j ++) {

//取出每個(gè)參數(shù)

Class cfc = cfs[j];

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

}

}

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


}



獲取String類(lèi)中的所有的構(gòu)造方法END





獲取Student類(lèi)中所有的構(gòu)造方法Constructor? ?START




//獲取Student類(lèi)中所有的構(gòu)造方法Constructor

Constructor[]cs = c3.getDeclaredConstructors();

for(int i = 0;i < cs.length;i ++) {

//獲取每個(gè)構(gòu)造方法

Constructor ct = cs[i];

//獲取構(gòu)造方法的參數(shù)類(lèi)型

Class[]cfs = ct.getParameterTypes();

System.out.println("第" + i + "個(gè)構(gòu)造方法的參數(shù)列表:");

for(int j = 0;j < cfs.length;j ++) {

Class cc = cfs[j];

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

}

}




獲取Student類(lèi)中所有的構(gòu)造方法Constructor? ?END




獲取Student類(lèi)中的所有方法Method? ?START



//獲取Student類(lèi)中的所有方法Method

Method[]ms = c3.getDeclaredMethods();

for(int i = 0;i < ms.length;i ++) {

//獲取類(lèi)中的每個(gè)方法

Method m = ms[i];

//獲取方法名

String mn = m.getName();

System.out.println(mn);

//獲取返回類(lèi)型

Class mc = m.getReturnType();

//System.out.println(mc.getName());

//方法參數(shù)列表的類(lèi)型

Class[]mps = m.getParameterTypes();

for(int j = 0;j < mps.length;j ++) {

//取出每個(gè)方法中的單個(gè)參數(shù)

Class mpc = mps[j];

System.out.println("參數(shù)類(lèi)型是:" + mpc.getName());

}

}






獲取Student類(lèi)中的所有方法Method? ?END




通過(guò)反射獲取指定類(lèi)的所有屬性Field? ?START


Class c3 = Class.forName("com.SSHC.bean.Student");

//通過(guò)反射獲取指定類(lèi)的所有屬性Field

Field[]fs = c3.getDeclaredFields();

for(int i = 0;i < fs.length;i ++) {

//取出每個(gè)屬性

Field f = fs[i];

//獲取每個(gè)屬性的名和類(lèi)型

String fn = f.getName();

System.out.println(fn);

Class ft = f.getType();

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

}




通過(guò)反射獲取指定類(lèi)的所有屬性Field? ?END




java.util.Date類(lèi)有哪些屬性? START

//java.util.Date類(lèi)有哪些屬性

Class c = Class.forName("java.util.Date");

Field[]f1 = c.getDeclaredFields();

for(int i = 0;i < f1.length;i ++) {

Field f = f1[i];

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

Class ft = f.getType();

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

}






java.util.Date類(lèi)有哪些屬性? END

例子END





反射PPT? START




反射PPT? END

Java.lang PPT START







Java.lang PPT END


講義 START

一、Class類(lèi)

二、反射


小紅,19歲,女

小明,20歲,男

小華,20歲,女

姓名年齡和性別,創(chuàng)建出一個(gè)Student,包含有姓名學(xué)生和年齡


Student,study方法,eat方法,姓名年齡和性別

Cat,play方法,eat方法,毛色品種

Car,run方法,repared方法,品牌價(jià)格顏色

類(lèi)名方法數(shù)組和屬性數(shù)組

創(chuàng)建一個(gè)Class類(lèi),包含類(lèi)名,方法列表和屬性列表,繼承自誰(shuí)

java類(lèi)的使用說(shuō)明書(shū),如果需要了解一個(gè)指定的類(lèi),就需要獲取到指定類(lèi)的使用說(shuō)明書(shū)

如果想了解某一個(gè)類(lèi)包含有哪些方法和屬性以及繼承自誰(shuí),那么就可以直接獲取當(dāng)前這個(gè)類(lèi)對(duì)應(yīng)的Class對(duì)象就可以了


如果需要使用反射技術(shù),就必須要先獲取類(lèi)的Class對(duì)象


為什么不想在程序中使用過(guò)多的import語(yǔ)句?

方法中沒(méi)有包含構(gòu)造方法。



講義 END


Java Web:Java.lang,反射調(diào)用,獲取類(lèi)的對(duì)應(yīng)的Class對(duì)象,屬性,構(gòu)造方法【詩(shī)書(shū)畫(huà)唱】的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
海淀区| 华宁县| 老河口市| 霍林郭勒市| 德江县| 新巴尔虎左旗| 彰武县| 兴安县| 福州市| 磐石市| 聂拉木县| 鹤山市| 侯马市| 镇远县| 长垣县| 体育| 蓝山县| 锡林浩特市| 孟连| 无棣县| 鲁山县| 天水市| 安阳县| 江门市| 昭平县| 嘉义县| 虹口区| 津市市| 台前县| 景洪市| 千阳县| 墨脱县| 睢宁县| 沅陵县| 西畴县| 湄潭县| 广水市| 万宁市| 宜良县| 汉寿县| 兴城市|