为了账号安全,请及时绑定邮箱和手机立即绑定

反射——Java高级开发必须懂的

难度入门
时长 1小时20分
学习人数
综合评分9.67
759人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
  • 基元数组
    查看全部
  • 宿主的反射
    查看全部
  • 万事万物皆对象。

    一个类只是Class的一个实例对象,且一个类只有一个Class的实例对象

    查看全部
    0 采集 收起 来源:Class类的使用

    2020-08-30

  • 数据类型.class 称为数据类型的类类型 直接输出他的名称为数据类型名称

    不包含包名的name  getSimpleName

    getMethods获取的是所有的Public的函数,包括父类继承而来的

    getDeclaredMethod获取的是所有该类自己声明的方法,不论访问权限

    getReturnType获取方法的返回值类型的类类型

    getParameterTypes获取参数类型  得到的是参数列表的类型的类类型

    查看全部
  • 类也是对象,万事万物皆是对象,类是Class的对象,

    使用反射创建实例对象,newInstance 需要有无参的构造方法

    查看全部
    1 采集 收起 来源:Class类的使用

    2020-08-10

  • package lmr;
    public class ClassUtil{
    public static void printClassMessage(Object obj){
     Class c = boj.getClass();
     System.out.println("类的名称是:"+c.getName());
     Method[] ms = c.getMethods();
     for(int i=0;i<ms.length;i++){
     Class returnType = ms[i].getReturnType();
     System.out.println(returnType.getName()+"");
     System.out.println(ms[i].getName()+"(");
     Class[] paramTypes = ms[i].getParameterTypes();
     for(Class class1:paramTypes){
     System.out.println();
     }
     }
    }
    }


    查看全部
  • package lmr;
    public class ClassDemo2{
    public static void main(String[] args){
    Class c1 = int.class;
    Class c2 = String.class;
    Class c3 = double.class;
    Class c4 = Double.class;
    Class c5 = void.class;
    System.out.println(c1.getName());
    System.out.println(c2.getName());
    System.out.println(c2.getSimpleName());
    System.out.println(c5.getName());
    }
    }


    查看全部
  • class OfficeBetter
    {public static void main(String[] args)
    {try{Class c = Class.forName(args[0]);
    OfficeAble oa = (OfficeAble)c.newInstance(); 
    oa.start();
    }
    }
    }


    查看全部
  • class Excel implements OfficeAble
    {
    public void start()
    {
    System.out.println("excel..starts..");
    }
    }


    查看全部
  • class OfficeBetter
    {
    public static void main(String[] args)
    {
    try
    {
    Class c = Class.forName(args[0]);
    OfficeAble oa = (OfficeAble)c.newInstance(); 
    oa.start();
    }
    }
    }


    查看全部
  • class Word
    {
    public static void start()
    {
    System.out.println("word..starts..");
    }
    }


    查看全部
  • class Office
    {
    public static void main(String[] args)
    {
    if("Word".equals(args[0])
    {
    Word w = new Word();
    w.start();
    }
    if("Excel".equals(args[0]))
    {
    Excel e = new Excel();
    e.start();
    }
    }
    }


    查看全部
  • 类是对象,类是java.lang.Class类的实例对象

    There is a class named Class

    查看全部
    0 采集 收起 来源:Class类的使用

    2020-08-05

  • package lmr;
    public class ClassDemo1{
    public static void main(String[] args){
    Foo foo1 = new Foo();
    Class c1 = Foo.class;
    Class c2 = foo1.getClass();
    System.out.println(c1 == c2);
    Class c3 = null;
    try{
    C3 = Class.forName("lmr.Foo");
    }catch(ClassNotFoundException e){
    e.printStackTrace();
    }
    c3 = Class.forName();
    }
    System.out.println(c2 == c3);
    }
    class Foo{}


    查看全部
    0 采集 收起 来源:Class类的使用

    2020-08-04

  • 反射的操作都是编译之后的操作。

    如图中带范式和不带范式的list取类类型的结果相同,说明编译之后结合的范式是去泛型化的。

    Java中集合的泛型,是防止错误输入的,只在编译阶段有效,绕过编译就无效了。

    验证:如图可以通过方法的反射来操作,绕过编译,实现在一个ArrayList <string>中add加入一个数字20

    注意:但是现在不能再使用for遍历数。组了,否则会报类型错误。


    查看全部

举报

0/150
提交
取消
课程须知
童鞋们,学习本课程前需要熟悉Java面向对象的思想,并能掌握Java IO输入输出流、集合和泛型等知识。可参考慕课网Java入门的一、二、三季以及我的文件我做主——Java IO流课程。
老师告诉你能学到什么?
1、能够理解并应用反射机制。 2、能够了解反射机制在集合泛型中的应用。 3、有利于更好的学习框架等Java高级技术。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!