class的常用操作

news/2024/7/4 0:50:32 标签: class
class="baidu_pl">
class="article_content clearfix">
class="htmledit_views">

常用操作

class="has">package com.test.user;

import org.junit.Test;

import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * @Author: xf
 * @Date: 2018/5/30 13:52
 * @Version 1.0
 */
public class test {


    @Test
    public void test() throws NoSuchFieldException, IllegalAccessException, InstantiationException, ClassNotFoundException {
        Person p = new Person();
        Class<Person> personClass = Person.class;//第一种
        System.out.println(p.getClass());//第二种
        System.out.println("---------------------------");
        System.out.println(p.getClass().getName());//获得类的完整名字
        System.out.println("-------------获得类的public类型的属性--------------");
        //获得类的public类型的属性
        Field[] fields = p.getClass().getFields();
        for (Field f : fields) {
            System.out.println(f.getName());
        }
        System.out.println("--------------获得类的所有属性。包括私有的和继承类的--------------");
        // 获得类的所有属性。包括私有的和继承类的
        Field[] allFields = p.getClass().getDeclaredFields();
        for (Field field : allFields) {
            System.out.println(field.getName());// name age
        }

        System.out.println("---------------获得类的public类型的方法。这里包括 Object 类的一些方法-------------------------------------");
        // 获得类的public类型的方法。这里包括 Object 类的一些方法
        Method[] methods = p.getClass().getMethods();
        for (Method method : methods) {
            System.out.println(method.getName());// work waid equls toString
            // hashCode等
        }

        System.out.println("-------------------获得指定的属性---------------------------------");
        // 获得指定的属性
        Field f1 = p.getClass().getField("age");
        System.out.println(f1);

        System.out.println("---------------------------------获得指定的私有属性----------------");
        // 获得指定的私有属性
        Field f2 = p.getClass().getDeclaredField("name");
        // 启用和禁用访问安全检查的开关,值为 true,则表示反射的对象在使用时应该取消 java 语言的访问检查;反之不取消
        f2.setAccessible(true);
        System.out.println(f2);

        System.out.println("-----------------------赋值-----------------------------");
        // 创建这个类的一个对象
        Object p2 = p.getClass().newInstance();
        // 将 p2 对象的 f2 属性赋值为 Bob,f2 属性即为 私有属性 name
        f2.set(p2, "Bob");
        // 使用反射机制可以打破封装性,导致了java对象的属性不安全。
        System.out.println(f2.get(p2)); // Bob

        System.out.println("------------------获取构造方法----------------------------------");
        // 获取构造方法
        Constructor[] constructors = p.getClass().getConstructors();
        for (Constructor constructor : constructors) {
            System.out.println(constructor.toString());// public
            // com.ys.reflex.Person()
        }

        // 3、通过 Class 对象的 forName() 静态方法来获取,用的最多,
        // 但可能抛出 ClassNotFoundException 异常
        Class c3 = Class.forName("com.clkj.xf.app2.Person");
        System.out.println(c3);
        System.out.println(c3.getName());

    }


    public class Person {
        // 私有属性
        private String name = "Tom";
        // 公有属性
        public int age = 18;

        // 构造方法
        public Person() {
        }

        // 私有方法
        private void say() {
            System.out.println("private say()...");
        }

        // 公有方法
        public void work() {
            System.out.println("public work()...");
        }
    }


}

 


http://www.niftyadmin.cn/n/1251992.html

相关文章

crt连接中兴服务器,利用SecureCRT实现中兴C220自动登录

利用SecureCRT实现中兴C220自动登录 javascript利用SecureCRT实现中兴C220自动登录 原理介绍&#xff1a;利用secureCRT6.7 实现此C220自动登录 去掉繁琐了输入过程 运行效果图&#xff1a;选择 脚本 并执行下面的脚本即可&#xff01;脚本代码如下&#xff1a;# $language &q…

服务器mysql怎么配置才能远程连接

如何设置MYSQL服务器允许远程连接&#xff1f;如果你使用的与数据库不在同一台服务器上电脑&#xff0c;那么MySQL 服务器就需要允许远程链接&#xff0c;网站才能正常运行。那么如何设置MYSQL服务器允许远程连接呢&#xff1f;我想这是很多人都想提出的疑问&#xff0c;下面是…

css中hover没效果,我在段落中设置ID时,CSS:hover效果不起作用

我有以下具有轻松效果的css3过渡&#xff1a;HTMLCSS* {padding: 0;margin: 0;}.button {width: 180px;margin-top: 45px;}.button a {display: block;height: 40px;width: 180px;/*TYPE*/color: black;font: 17px/50px Helvetica, Verdana, sans-serif;text-decoration: none;…

IntelliJ IDEA下使用JSTL标签库方法

IDEA和Myeclipse不同的是&#xff0c;没有自己导入JSTL的包文件&#xff0c;所以一切还是要靠自己啊 &#xff01; 先从http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/下载JSTL包的ZIP文件&#xff0c;下载最新的jakarta-taglibs-standard-1.1.2.zip那一…

confirm用法实例详解

<script>$(function() {$("#logout_btn").click(function() {var r window.confirm(你确认退出吗?);if (r){window.location.href "${pageContext.request.contextPath}/login.action";}else {}});}); </script> <a href"javascrip…

服务器Ahs文件怎么打开,AHS 文件扩展名: 它是什么以及如何打开它?

AHS 问题的来源常见的 AHS 打开问题Adobe Photoshop CC 已删除尝试打开 AHS 时&#xff0c;你会遇到一条错误消息&#xff0c;例如 “%%os%% 无法打开 AHS 文件”。 通常&#xff0c;这是因为你没有安装适用于 %%os%% 的 Adobe Photoshop CC。 你将无法双击以打开 AHS&#xff…

ftp服务器 新建文件夹,ftp服务器路径下新建文件夹

ftp服务器路径下新建文件夹 内容精选换一换本章节指导用户安装指标采集插件&#xff0c;用于采集GPU类指标和RAID类指标。ECS支持GPU类指标&#xff0c;BMS暂不支持。BMS支持RAID类指标&#xff0c;ECS暂不支持。若Agent升级到1.0.5及以上版本&#xff0c;对应插件需使用最新的…

jstl 保留两位小数

EL&#xff1a; <fmt:formatNumber type"number" value"${r.mwithdPrice }" pattern"#.00"/> pattern"#.00"表示规定必须保存2位小数&#xff0c;如果最多保存2位&#xff0c;使用 pattern"#.##" 2 如果是js代码的话…