java网络编程和反射基础入门.docx
- 文档编号:10959335
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:21
- 大小:18.90KB
java网络编程和反射基础入门.docx
《java网络编程和反射基础入门.docx》由会员分享,可在线阅读,更多相关《java网络编程和反射基础入门.docx(21页珍藏版)》请在冰豆网上搜索。
java网络编程和反射基础入门
java反射:
获取Class类对象
1)getClass()
2)通过类名.class
3)forName(StringclassName)
通过getConstructors()获取类对应的构造方法返回值是Constructor
>[]
1客户端
Client.java
packagecom.chinasofti.eec.demo;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.io.PrintWriter;
import.ServerSocket;
import.Socket;
import.UnknownHostException;
importjava.util.Scanner;
publicclassClient{
privatestaticPrintWriterpw=null;//打印
privatestaticBufferedReaderbr=null;//缓冲流
privatestaticSockets;
privatestaticServerSocketss;
privatestaticScannerscan=newScanner(System.in);
publicstaticvoidmain(String[]args){
try{
s=newSocket("127.0.0.1",5500);
pw=newPrintWriter(newOutputStreamWriter(s.getOutputStream()));
br=newBufferedReader(newInputStreamReader(s.getInputStream()));
while(true){
System.out.println("客户端说:
");
Stringstr=scan.nextLine();
pw.println(str);
pw.flush();
Stringstring=br.readLine();
System.out.println("服务端说:
"+string);
if("byby".equals(str)){
break;
}
}
}catch(UnknownHostExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
try{
br.close();
pw.close();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
Person.java
packagecom.chinasofti.eec.demo;
publicclassPerson{
publicStringname="zhansgan";
publicintage=18;
publicPerson(Stringname,intage){
super();
this.name=name;
this.age=age;
}
publicStringgetName(){
returnname;
}
publicvoidsetName(Stringname){
this.name=name;
}
publicintgetAge(){
returnage;
}
publicvoidsetAge(intage){
this.age=age;
}
@Override
publicStringtoString(){
return"Person[name="+name+",age="+age+"]";
}
}
2服务器
Service.java
packagecom.chinasofti.eec.demo;
importjava.io.BufferedReader;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.io.OutputStreamWriter;
importjava.io.PrintWriter;
import.ServerSocket;
import.Socket;
importjava.util.Scanner;
/**
*服务端
*@authorAdministrator
*
*/
publicclassService{
privatestaticPrintWriterpw=null;//打印
privatestaticBufferedReaderbr=null;//缓冲流
privatestaticSockets;
privatestaticServerSocketss;
privatestaticScannerscan=newScanner(System.in);
publicstaticvoidmain(String[]args){
try{
ss=newServerSocket(5500);
System.out.println("服务器启动成功--------");
s=ss.accept();//等待客户端链接
System.out.println("链接成功"+s.getRemoteSocketAddress());//返回此套接字链接端口的地址
br=newBufferedReader(newInputStreamReader(s.getInputStream()));//准备读取客户端发过来的信息
pw=newPrintWriter(newOutputStreamWriter(s.getOutputStream()));//准备向客户端写入信息
while(true){
Stringstring=br.readLine();//读取客户端发过来的信息
System.out.println("服务端接受到:
"+string);
System.out.println("服务端说:
");
Stringstr=scan.next();
pw.println(str);//把服务端想说的话发送给客户端
pw.flush();
if("byby".equals(str)){
break;
}
}
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
try{
br.close();
pw.close();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
}
3获取class对象
packagecom.chinasofti.eec.demo;
publicclassClassDemo{
publicstaticvoidmain(String[]args){
Stringstr="helloWorld";
Class
>c=str.getClass();//获取Class类对象
System.out.println(c.getName());
}
}
ClassDemo1.java
packagecom.chinasofti.eec.classdemo;
publicclassClassDemo{
publicstaticvoidmain(String[]args){
Aa=newA();
Classc=a.getClass();
Stringname=c.getName();
System.out.println(name);
}
}
classA{
}
4通配符
packagecom.chinasofti.eec.demo;
publicclassClassDemo2{
publicstaticvoidmain(String[]args){
Class
>cls=String.class;
System.out.println(cls.getName());
}
}
ClassDemo2.java
packagecom.chinasofti.eec.classdemo;
importcom.chinasofti.eec.vo.Person;
/**
*三种方法得到Class类对象的方法
*@authorAdministrator
*
*/
publicclassClassDemo2{
publicstaticvoidmain(String[]args){
Class
>c1=null;
Class
>c2=null;
Class
>c3=null;
//第一种方式(最常用的一种)
try{
c1=Class.forName("com.chinasofti.eec.vo.Person");
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
c2=newPerson().getClass();
c3=Person.class;
Stringname1=c1.getName();
Stringname2=c2.getName();
Stringname3=c3.getName();
System.out.println(name1+""+name2+""+name3);
}
}
ClassDemo.java
packagecom.chinasofti.eec.demo;
publicclassClassDemo3{
publicstaticvoidmain(String[]args)throwsClassNotFoundException{
Class
>cls=Class.forName("java.io.File");
System.out.println(cls.getName());
}
}
5反射获得类的构造器
packagecom.chinasofti.eec.demo;
publicclassClassDemo4{
publicstaticvoidmain(String[]args)throwsClassNotFoundException,InstantiationException,IllegalAccessException{
Class
>cls=Class.forName("com.chinasofti.eec.demo.Person");
Personper=(Person)cls.newInstance();
per.setName("123");
per.setAge(18);
System.out.println(per);
}
}
ClassDemo3.java
packagecom.chinasofti.eec.classdemo;
importjava.lang.reflect.Constructor;
importjava.lang.reflect.InvocationTargetException;
importcom.chinasofti.eec.vo.Person;
/**
*通过反射获得类的构造器并初始化参数
*@authorAdministrator
*
*/
publicclassClassDemo3{
publicstaticvoidmain(String[]args){
Class
>c=null;
Constructor
>[]con=null;
try{
c=Class.forName("com.chinasofti.eec.vo.Person");
}catch(ClassNotFoundExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
con=c.getConstructors();
Personperson=null;
try{
person=(Person)con[1].newInstance("123",10);
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
System.out.println(person);
}
}
6获取构造对象
packagecom.chinasofti.eec.demo;
importjava.lang.reflect.Constructor;
importjava.lang.reflect.InvocationTargetException;
publicclassClassDemo5{
publicstaticvoidmain(String[]args)throwsNoSuchMethodException,SecurityException,ClassNotFoundException,InstantiationException,IllegalAccessException,IllegalArgumentException,InvocationTargetException{
Class
>cls=Class.forName("com.chinasofti.eec.demo.Person");
Constructor
>[]con=cls.getConstructors();//获取到构造方法
Personper=(Person)con[0].newInstance("gqk",18);
System.out.println(per);
}
}
ClassDemo5.java
packagecom.chinasofti.eec.classdemo;
/**
*获取全部的构造方法
*/
importjava.lang.reflect.Constructor;
publicclassClassDemo4{
publicstaticvoidmain(String[]args){
Class
>c=null;
Constructor
>[]con=null;
try{
c=Class.forName("com.chinasofti.eec.vo.Person");
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}
con=c.getConstructors();
for(inti=0;i System.out.println(con[i]); } } } 7方法类 packagecom.chinasofti.eec.demo; importjava.lang.reflect.Method; publicclassClassDemo6{ publicstaticvoidmain(String[]args)throwsClassNotFoundException,InstantiationException,IllegalAccessException{ Class >cls=Class.forName("com.chinasofti.eec.demo.Person"); Method[]m=cls.getMethods(); for(inti=0;i System.out.println(m[i].getParameterTypes()+""+m[i]); } } } ClassDemo6.java packagecom.chinasofti.eec.classdemo; /** *获取构造方法里面的信息 */ importjava.lang.reflect.Constructor; importjava.lang.reflect.Modifier; publicclassClassDemo5{ publicstaticvoidmain(String[]args){ Class >c=null; Constructor >[]con=null; try{ c=Class.forName("com.chinasofti.eec.vo.Person"); }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } con=c.getConstructors(); for(inti=0;i //获得构造方法中的全部参数 Class >[]c1=con[i].getParameterTypes(); //获得修饰符 intnum=con[i].getModifiers(); Stringxiushi=Modifier.toString(num); System.out.println(xiushi);//输出修饰符 System.out.println(con[i].getName()); System.out.println("("); for(intj=0;j System.out.println(c1[j].getName()); } System.out.println("){}"); } } } 8invoke反射 packagecom.chinasofti.eec.demo; importjava.lang.reflect.InvocationTargetException; importjava.lang.reflect.Method; publicclassClassDemo7{ publicstaticvoidmain(String[]args)throwsClassNotFoundException,InstantiationException,IllegalAccessException,NoSuchMethodException,SecurityException{ Class >cls=null; cls=Class.forName("com.chinasofti.eec.demo.Person"); Methodm=cls.getMethod("getName"); Personperson=newPerson("zhangsan",18); Stringperson1=null; try{ person1=(String)m.invoke(person); }catch(IllegalArgumentException|InvocationTargetExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } System.out.println(person1); } } ClassDemo7.java packagecom.chinasofti.eec.classdemo; importjava.lang.reflect.Constructor; importjava.lang.reflect.InvocationTargetException; importcom.chinasofti.eec.vo.Person; /** *通过反射来创建Person类的对象 *@authorAdministrator * */ publicclassClassDemo6{ publicstaticvoidmain(String[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 网络 编程 反射 基础 入门