首页 > 编程语言 >网路编程和反射

网路编程和反射

时间:2023-04-28 17:22:11浏览次数:33  
标签:反射 对象 编程 public 获取 Student Constructor Class 网路

网路编程

CS :客户端与服务器
BS : 浏览器和服务器 协议公开 数据安全 存在问题(目前加密算法很厉害)

1.网络协议:
遵循网路数据传输规则
TCP/IP 协议 4层 视频语音需要对方同意
UDP 协议 7 层 发消息收到没收到 都行

应用层
传输层
网络层
链路层


2. IP地址和端口号
ipv4 ipv6 通过IP地址找到计算机
端口号 是找到对应软件 不会出现QQ和微信聊天

3.InetAddress 类
子类 Inet4Address Inet6Address


4.UDP协议 不可靠 不连接
是无连接通信协议
数据的发送发送端和接收端 不建立逻辑连接
不能保证数据的完整型

5TCP协议 面向连接 安全 可靠
点对点通信
连接中可以大量传输
实现两台计算机之间的通信 ,通信两端需要创建连接
区别在于 UDP 中只有发送端和接收端

原理:
server client
创建服务器 创建客户端对象
启用监听 本地主机:1.localhost 2. 127.0.0.1 3. ip 地址 192.168.0.107
获取输入流 读取客户端信息 向服务器发一条数据

先启用服务端~~~~~~~~~~~~
在启用客户端

反射(照镜子 Java 类加载器 classLoader)
反射:
万事万物皆对象:


1.反射概述
反射是指对于任何一个Class类,
在"运行的时候"都可以直接得到这个类全部成分。
在运行时,可以直接得到这个类的构造器对象:Constructor
在运行时,可以直接得到这个类的成员变量对象:Field
在运行时,可以直接得到这个类的成员方法对象:Method
这种运行时动态获取类信息以及动态调用类中成分的能力称为ava语言的反射机制。


2.反射的关键
先得到Class类的对象,然后就可以得到Class的全部成分
拿成员变量 Field
拿函数 Method
拿构造器 Constructor

反射的第一步 就是 获取Class类的对象!!!!!!!!
1.Class类中的一个静态方法 forName (权限名 包名 +类名)
Class c = Class.forName("com.msr.lianXi02.Student");
System.out.println("c = " + c);//Student.class

2. 类名.class
Class c1 = Student.class;


3.对象.getClass() 获取对象对应类的Class对象
Student s = new Student();
Class c2= s.getClass();


第二步 反射获取构造器对象 Constructor
第一种
public void getConstructors() {
//第一步获取类对象
Class c = Student.class;
//第二布 只能拿public
Constructor[] constructors = c.getConstructors();
//遍历构造器
for (Constructor constructor : constructors) {
System.out.println(constructor.getName() + "====" + constructor.getParameterCount());
}
}

第二种
public void getDeclaredConstructors() {
//第一步获取类对象
Class c = Student.class;
//第二布 提取类中的全部构造器对象 所有都可以拿
Constructor[] constructors = c.getDeclaredConstructors();
//遍历构造器
for (Constructor constructor : constructors) {
System.out.println(constructor.getName() + "====" + constructor.getParameterCount());
}
}
第三种
public void getConstructor() throws NoSuchMethodException {
//第一步获取类对象
Class c = Student.class;
//第二布 定位单个构造器对象
Constructor cons = c.getConstructor();
//遍历构造器
System.out.println(cons.getName() + "====" + cons.getParameterCount());

第三步 反射函数 Method
Class类中获取方法:

public Method[] getMethods();//获取包括自身和继承(实现)过来的所有的public方法——Method不支持泛型<>,即后面不接<>

public Method[] getDeclaredMethods();//获取自身所有的方法(private、public、protected,和访问权限无关),不包括继承的

public Method[] getMethod(String methodName, Class<T>...parameterTypes);//表示获取指定的一个公共的方法,包括继承的

methodName:表示获取的方法的名字

parameterTypes:表示获取的方法的参数的Class类型
setAccessible (true ) 取消Java 的权限检测

标签:反射,对象,编程,public,获取,Student,Constructor,Class,网路
From: https://www.cnblogs.com/ningbaoer/p/17362731.html

相关文章

  • python 编程规范有哪些?
    Python编程规范主要包括代码布局、命名规范、注释规范、函数编写规范等多个方面,下面给出一些常见的编程规范及其示例代码。1.代码布局规范代码布局规范主要是指代码的缩进、行宽、空行、换行等方面,下面是一些常见的代码布局规范:使用四个空格作为一个缩进级别,不要使用制表符......
  • [独家放送]Unity2020规划预览,可视化编程又双叒叕来了!
    你好,我是你的技术探路者郑洪智,你可以叫我大智。欢迎一起进入2020年,在新的一年里Unity有什么大动作呢?本文带你速览你最关心的Unity2020的核心功能!你最可能关心的功能有哪些呢?Unity2019.3在哪里???(乱入)下面从四个方面来看Unity有哪些更新:核心功能和性能更多的DOTS(Data-OrientedTechSt......
  • 【ChatGPT】GPT-3.5 能理解 Bash 吗?与 ChatGPT AI 结对编程
    目录用ChatGPT和Bash脚本进行实验第一次尝试——ChatGPT试图解决这个问题第二次尝试——ChatGPT纠正了自己的错误第三次尝试——ChatGPT再次尝试如果一开始你没有成功......至少你会学到一些东西总结在过去的几个星期,我们已经听到了很多关于人工智能和自然语言处理的消息—......
  • JasperReports教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介JasperReports入门教程-使用包含从环境设置,报告设计,编译报告设计,填充报告,查看和打印报告,导出,参数,数据源开始的基础知识到高级知识的初学者教程,简单易学地设计和创建JasperReports,字段,表达式,变量,部分,组,样式,Scriplets,子报告,图表,Corsstabs和国际化。教程目录JasperRep......
  • 学习C#编程经典书籍
    1.《C#语言程序设计》(第4版):由微软公司的C#语言团队编写,是学习C#语言的必备经典著作。2.《C#高级编程》(第9版):由AndrewTroelsen编写,涵盖了C#语言的高级特性和最佳实践。3.《CLRviaC#》(第4版):由JeffreyRichter编写,深入讲解了C#语言和CLR(公共语言运行时)之间的关系,是学习C#底层知......
  • Shell编程学习笔记
    变量设置局部变量变量名=变量值设置全局变量export变量名=变量值删除变量unset变量名添加PATH环境变量PATH=$PATH:[路径]数组变量mytest=(onetwothreefourfive)echo$mytest--->one显示数组某个位置的变量echo${mytest[2]}--->three显示整个数......
  • 【牛客编程题】Python机器学习(入门例题5题)
    【牛客编程题】Python机器学习(入门例题5题)做题链接:https://www.nowcoder.com/exam/oj?page=1&tab=Python篇&topicId=329文章目录AI1鸢尾花分类_1AI2鸢尾花分类_2AI3决策树的生成与训练-信息熵的计算AI4决策树的生成与训练-信息增益AI5使用梯度下降对逻辑回归进行训练AI1鸢尾......
  • 【牛客编程题】shell34题(Linux awk,grep命令)
    【牛客编程题】shell34题(Linuxawk,grep命令)SHELL01-22:基本文本处理SHELL23-28:nginx日志分析SHELL29-32:netstat练习做题链接:https://www.nowcoder.com/exam/oj?page=1&tab=SHELL%E7%AF%87&topicId=195参考资料:https://github.com/jaywcjlove/linux-command文章目录从awk命令开始对......
  • 使用Spring进行面向切面(AOP)编程
    基础知识:【要进行AOP编程,首先我们要在spring的配置文件中引入aop命名空间:<beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:aop="http://www.springframework......
  • 2023.4.27编程一小时打卡
    一、问题描述:建立一个向量容器的实例s,不断对s调用push_back向其中增加新的元素,观察在此过程中s.capacity()的变化。二、解题思路:首先,编写一个向量容器vector<int>s,利用循环对其进行不断调用push_back,再输出它的capacity()函数观察它向量容器的容量的变化。三、代码实现:1#in......