JAVA。封装对容器操作的类是?

JAVA,以下哪个类封装了对容器的常用操作?请给出详细解答,谢谢

img

C

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7788817
  • 这篇博客你也可以参考下:java:给定字符串,返回每个字符出现的个数。
  • 同时,你还可以查看手册:java-学习Java语言 - 描述Java编程语言的基本概念和特点的课程。-泛型是Java编程语言的一个强大功能。它们提高了代码的类型安全性,使更多的错误可以在编译时发现。-为什么使用仿制药? 中的内容
  • 除此之外, 这篇博客: java 反射机制,为什么要用反射?中的 4.反射的体现,为什么要用反射? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 看到这里会觉得反射很麻烦,没有体现出它的价值。接下来看个案例,就会一目了然了。这个案例就是写一个类,在不改变该类任何代码的前提下,可以帮助我们创建任意类的对象,并且执行其中任意方法。

    步骤:

     1. 将需要创建的对象的全类名和需要执行的方法定义在配置文件
     2. 在程序中加载读取配置文件
     3. 使用反射技术来加载类文件进入内存
     4. 创建对象
     5. 执行方法
    

    Student类:

    @NoArgsConstructor
    public class Student {
        public void sleep(){
            System.out.println("睡觉");
        }
    }
    

    pro.properties配置文件:

    className=com.lyp.domain.Student
    methodName=sleep
    

    ReflectTest类:

    public class ReflectTest {
        public static void main(String[] args) throws Exception {
            // 前提:不能修改该类的代码
    //        Student s = new Student();
    //        s.sleep();
    
            // 1.加载配置文件
            // 1.1 创建Properties对象
            Properties pro = new Properties();
            // 1.2 加载配置文件,转化为一个集合
            // 1.2.1 获取class目录下的配置文件
            ClassLoader classLoader = ReflectTest.class.getClassLoader();//通过类加载器将字节码文件加载进内存
            InputStream is = classLoader.getResourceAsStream("pro.properties");
            pro.load(is);
    
            // 2.获取配置文件中定义的数据
            String className = pro.getProperty("className");
            String methodName = pro.getProperty("methodName");
    
            // 3.加载该类进内存
            Class cls = Class.forName(className);
            // 4.创建对象
            Object o = cls.newInstance();
            // 5.获取方法对象
            Method method = cls.getMethod(methodName);
            // 6.执行方法
            method.invoke(o);
    
        }
    }
    

    运行结果:
    在这里插入图片描述

    将需要生成的对象的信息放在配置文件中,这样我们不需要去修改ReflectTest的代码,只需要修改配置文件中className,methodName即可;如果不使用配置文件,就需要在ReflectTest类中写死,Student s = new Student(); s.sleep();那如果想要生成别的对象每次都需要去找到ReflectTest类,修改Student为别的类。使用反射后,增加了程序的灵活性,避免将代码写死,降低了耦合性。在框架的设计思想里用到的就是反射。

  • 您还可以看一下 庄博老师的java面向对象下篇课程中的 自动装箱,自动拆箱小节, 巩固相关知识点