luogg_java学习_10_异常_反射

本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用.

转载请注明 出自 : luogg的博客园 谢谢配合!

异常_反射

异常

异常就是导致程序中断执行的一段指令流.
在java中, 对于异常在API中也有明确的定义,叫做异常类.

异常分类

  • Error : JVM的错误, 程序中不进行处理, 交给虚拟机.
  • Exception : 程序中出现的异常, 可以在程序中进行处理 . Exception 又分为编译时异常,运行时异常.
  • 编译时异常 : 代码编写完成之后编译无法通过. 例如:ParseException(转换异常),ClassCastException类型转换异常
  • 运行时异常 : 代码本身没有问题, 可以通过编译, 运行时候会出现错误.例如 : NullPointerException(空指针异常)、ArithmeticException(数学计算异常,0作被除数)、ArrayIndexOutOfBoundsException(数组角标越界异常)

异常处理

1.捕获异常 :try catch 直接处理可能出现的异常
2.声明异常 : throws 声明告诉调用中可能的异常, 暴露问题, 调用者自己处理

try{  
      //可能出现异常的代码  
}catch(Exception1 e1){  
      //处理的方式1  
      e.printStaticTrace();  
}[catch](Exception2 e2{   
      //处理的方式2
}[finally]{  
      //一定要执行的代码  
}  
  • finally : 异常的同意出口, 不管程序是否产生异常, finally语句块中的内容一定会被执行.
  • throws关键字 : 用来声明方法, 表示此方法不处理异常, 而是抛给调用处, 谁调用这个方法, 谁就去处理这个异常.
  • throw关键字 : 正常情况下,异常是由JVM抛出的,除了这种情况之外,我们还可以通过 throw 关键字人为的抛出一个异常。
try,catch,finally 结合的几种方式:
  1. try,catch,finally
  2. try,catch
  3. try,finally

反射

简介

反射机制主要是用来破解类文件的

正常的文件执行:在源代码已知的情况下,导入类路径,通过 new 关键字实例化该类对象,通过对象名使用这个类
反射的文件执行:在源代码未知的情况下,对类文件进行破解,然后再去使用这个类

要想破解类, 就必须要对类进行了解, 类其实也是一种类型, 对于一个类来讲, 应该有属性, 普通方法, 构造方法.
java提供了Class类, 用来对类本身进行操作, 通过Class类可以完整的得到一个类的结构,例如: 方法,属性等.

Class类中的常用方法介绍 :

    获取属性相关:
        getDeclaredFields(): //获取类自己定义的全部属性
        getFields()://获取类自己定义的和父类继承来的 public 属性
    获取构造方法: 
        getConstructors()://获取公共的构造方法
        getDeclaredConstructors(): //获取所有构造方法
    获取一般方法:
        getMethods()://获取自己类和父类的 public 方法
        getDeclaredMethods()://获取自己类的所有方法
getName();
    以 String 的形式返回此 Class 对象所表示的实体(类、接口、数组类、基本类型或 void)名称。
getModifiers();
    返回此类或接口以整数编码的 Java 语言修饰符。

获取class类的三种方法:

创建 Class 对象
    Class 类没有构造方法,创建 Class 对象,有三种方法:
    第一种:Class.forNama("完整包名.类名");       例如:Class.forName("com.weixin.Student");
    第二种:通过对象名 .getClass();
    第三种:类名 .class

        //第一种方法
        Class<?> clazz = null;
        try {
            clazz = Class.forName("com.weixin.Teacher");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        
        /*//第二种方法
        Class clazz2 = Teacher.class;
        
        //第三种方法
        Teacher teacher = new Teacher();
        Class clazz3 = teacher.getClass();*/

        //获取属性
        Field[] f = clazz.getDeclaredFields();
        for(Field f1 : f) {
            //获取属性的名字
            System.out.println(f1.getName());
            //获取属性的访问修饰符
            System.out.println(Modifier.toString(f1.getModifiers()));
            //获取属性的数据类型
            System.out.println(f1.getType().getName());
        }

破解属性

在API中,提供了表示属性的类 Field
Field 类常用方法:
getName():获取属性名
getType().getName():获取属性类型
Modifier.toString((f1.getModifiers()));获取属性修饰符private还是public

破解方法:

Method[] m = clazz.getDeclaredMethods();
        for(Method m1:m) {
            System.out.println(Modifier.toString(m1.getModifiers())+" ");
            System.out.println(m1.getName()+" ");
        }

方法的运行:

Class<?> clazz = null;
        try {
            clazz = Class.forName("com.weixin.Teacher");
        } catch (ClassNotFoundException e) {            e.printStackTrace();
        }
        
        Method[] m = clazz.getDeclaredMethods();
        for(Method m1:m) {
            System.out.println(m1);
        }

转载于:https://www.cnblogs.com/luogg/p/5932083.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在风能领域,准确预测风速对于风电场的运行与管理至关重要。Matlab作为一个强大的数学计算和数据分析平台,被广泛应用于风速预测模型的构建。本文将深入探讨基于四种风速——随机风、基本风、阵风和渐变风的组合风速预测技术。 我们来理解这四种风速类型: 1. **随机风**:随机风是指风速呈现出随机性的变化,通常由大气湍流引起。在建模中,通常通过统计方法如高斯分布或Weibull分布来模拟这种不确定性。 2. **基本风**:基本风速是指在无特定扰动条件下的平均风速,它是长期观测结果的平均值,通常用于结构设计和风能评估。 3. **阵风**:阵风是短时间内风速显著增强的现象,对建筑物和风力发电机造成的主要威胁之一。阵风的预测涉及到风的脉动特性分析。 4. **渐变风**:渐变风是指风速随时间和空间逐渐变化的过程,常见于风向转变或地形影响下的风场变化。 在Matlab中,利用这四种风速类型进行组合预测,可以提高预测的准确性。预测模型可能包括以下几个步骤: 1. **数据收集与预处理**:收集历史风速数据,包括随机风、基本风、阵风和渐变风的数据,进行异常值检测、缺失值填充以及数据标准化。 2. **特征工程**:提取风速变化的相关特征,如平均值、标准差、极值、频率分布等,这些特征可能对预测有重要影响。 3. **模型选择**:可以选择多种预测模型,如时间序列分析(ARIMA、状态空间模型等)、机器学习算法(线性回归、决策树、支持向量机、神经网络等)或深度学习模型(LSTM、GRU等)。 4. **模型训练**:利用历史数据训练选定的模型,调整模型参数以优化性能,例如通过交叉验证来避免过拟合。 5. **模型验证与评估**:使用独立的测试集验证模型预测效果,常见的评估指标有均方误差(MSE)、平均绝对误差(MAE)和决定系数(R²)。 6. **组合预测**:结合四种风速的不同模型预测结果,可以采用加权平均、集成学习(如bagging、boosting)等方式,以提升整体预测精度。 7. **实时更新与动态调整**:实际应用中,模型需要不断接收新的风速数据并进行在线更新,以适应风场环境的变化。 通过以上步骤,可以构建一个综合考虑各种风速特性的预测系统,这对于风电场的功率输出预测、风电设备的维护计划以及电网调度都具有重要价值。然而,需要注意的是,每个风场的地理环境、气候条件和设备状况都有所不同,因此模型的建立应根据实际情况进行定制和优
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值