`
kidiaoer
  • 浏览: 824850 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

我的容器类

阅读更多

package com.lxitedu.homework;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.lang.reflect.Constructor;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;

import com.lxitedu.service.LxitClassService;

import lombok.SneakyThrows;

public class Container {

  @SneakyThrows
  public static Object instance(String param) {
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    URL url = classLoader.getResource("beanConfig");
    File file = new File(url.getFile());
    BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
    String value = bufferedReader.readLine();
    String type = null;
    String[] array = null;
    String nestedClass = null;
    Class<?> classes = null;
    while (value != null) {
      array = value.split("=");
      for (int i = 0; i < array.length; i++) {
        if (array[i].equals(param)) {
          if (array[i + 1].contains("(")) {
            nestedClass = array[i + 1].split("\\(")[i + 1].substring(0, array[i + 1].split("\\(")[i + 1].length() - 1);
            classes = Class.forName(getBeanPath(nestedClass));
            System.out.println("class " + getBeanPath(nestedClass));
            int size = array[i + 1].length() - nestedClass.length()-2;
            type = array[i + 1].substring(0, size);
          } else {
            type = array[i + 1];
          }
        }
      }
      value = bufferedReader.readLine();
    }
    Constructor<?> constructor = getConstructor(classes, type, array);
    return getConstructorInstance(type, constructor);
  }

  @SneakyThrows
  public static String getBeanPath(String param) {
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    URL url = classLoader.getResource("beanConfig");
    File file = new File(url.getFile());
    BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
    String value = bufferedReader.readLine();
    String type = null;
    String[] array = null;
    while (value != null) {
      array = value.split("=");
      for (int i = 0; i < array.length; i++) {
        if (array[i].trim().equals(param)) {
          type = array[i + 1];
        }
      }
      value = bufferedReader.readLine();
    }
    if (type == null) {
      return null;
    } else {
      return type;
    }
  }

  @SneakyThrows
  private static Constructor<?> getConstructor(Class<?> nestedClass, String type, String[] array) {
    Class<?> classes = null;
    Constructor<?> constructor = null;
    Map<Integer, Class<?>> map = new HashMap<Integer, Class<?>>();
    for (int j = 0; j < array.length; j++) {
      if (map.get(j) == null) {
        classes = Class.forName(type);
        if (nestedClass != null) {
          constructor = classes.getConstructor(nestedClass);
        } else {
          constructor = classes.getConstructor();
        }
        map.put(j, classes);
      } else {
        classes = map.get(j);
      }
    }
    return constructor;
  }

  @SneakyThrows
  private static Object getConstructorInstance(String type, Constructor<?> constructor) {
    if (type == null) {
      return null;
    } else {
      return constructor.newInstance();
    }
  }

  public static void main(String[] args) {
    LxitClassService test = (LxitClassService) instance("lxitClassService");
    System.out.println(test.getList());
  }

}



分享到:
评论

相关推荐

    Qt的容器类

    Qt 容器类详解 Qt 容器类是 Qt 框架中的一种基本数据结构,用于存储和管理数据。 Qt 容器类可以分为连续容器和链表两大类别。连续容器类包括 QVector、QList,链表类包括 QLinkedList。 QVector&lt;T&gt; 是一种与数组...

    容器类实现的电话本

    实现电话号码本的管理和查询功能。号码本内预先存储了若干条联系人记录,记录内容包括联系人姓名和电话号码。...必须使用容器类作为内部数据结构,可自行选择合适的容器类; 必须把联系人记录定义成一个类;

    压力容器类设备预算、报价小软件.rar

    《压力容器类设备预算与报价软件详解》 在工业领域,压力容器类设备的预算与报价是一项关键工作,涉及到工程项目的成本控制、盈利预测以及竞标策略。为提高工作效率和准确性,专门的压力容器类设备预算、报价小软件...

    java容器类 是初学者很好的学习材料

    Java容器类是Java编程语言中不可或缺的一部分,它们主要用于存储和管理对象。这些类和接口位于`java.util`包中,为开发者提供了灵活的数据结构和数据操作方式。在Java中,容器类主要分为两大类:Collection和Map。 ...

    容器的分类

    本篇文章将详细讲解容器的分类,重点探讨Java中的集合框架,包括List、Set以及重写toString方法的重要性,同时也会简单提及Collections类的使用。 首先,我们来了解容器的分类。在Java中,容器主要分为两大类:集合...

    JAVA 容器类应用

    Java容器类是Java集合框架的重要组成部分,它们提供了一种存储、管理和操作对象的方式。在Java中,容器类包括数组、列表、队列、集、映射等数据结构,它们为开发者提供了灵活的数据处理能力。本篇文章将深入探讨Java...

    JavaSE8容器类的UML图(继承自Colletion的所有子类)

    参考JavaSE8,全面囊括了所有Java容器类,以Collection为基类,使用不同颜色不同的继承体系分支进行标识。

    C++容器类学习,学习容器类相关的基本用法

    C++容器类学习,学习容器类相关的基本用法

    容器类的举例

    在编程领域,容器类是数据结构的一个重要组成部分,它们用于存储和管理一组对象。容器类在C++标准库中有着广泛的应用,如`std::vector`、`std::list`、`std::set`和`std::map`等。本节我们将通过实例深入探讨容器类...

    java容器类研究与分析

    Java容器类,也称为集合类,是Java编程中用于存储和管理对象的重要工具。它们提供了比数组更加灵活和强大的功能,适用于各种复杂的数据结构需求。本文主要探讨Java容器类的基本概念、特点以及不同类型的容器。 首先...

    java容器类

    java 容器类 集合类 Collection 你懂了吗

    c++容器类&QT;容器

    ### C++ 容器类与 Qt 容器详解 #### C++ 容器类概述 在C++标准库中,容器类(containers)是用于存储数据的重要组件之一,它们为程序设计提供了高度灵活且功能丰富的数据管理手段。根据数据的组织形式不同,C++中...

    Java 容器类的解析及对比

    ### Java 容器类解析及对比 #### 一、概述 在Java开发中,容器类是程序员必须掌握的基础知识之一。本文将详细解析并对比Java中的各种容器类,特别是`Collection`、`List`、`ArrayList`、`Vector`以及`Map`、`...

    MFC容器类[参考].pdf

    本篇文章将深入探讨MFC中的基本容器类,包括其特性、分类、使用方法以及指针类型的容器类。 首先,MFC提供了三种基本的容器类:arrays(数组)、lists(链表)和maps(映射,也称为字典)。这些容器类允许开发者...

    C++编程思想/模板和容器类

    【C++编程思想/模板和容器类】 C++中的模板是一种强大的工具,它允许程序员创建泛型代码,即代码能够处理多种数据类型。模板的概念在C++中扮演着至关重要的角色,尤其是对于实现容器类,如向量、列表、集合等。容器...

    通过容器类HR管理系统中的部门、雇员管理功能

    在本场景中,我们讨论的是一个基于容器类的人力资源(HR)管理系统,其主要涉及部门和雇员的管理功能。 首先,容器类在编程中扮演着重要角色,它是一种可以容纳其他对象的数据结构。在Java中,例如ArrayList、...

    容器类失效实例.rar

    在IT行业中,容器类是软件开发中的重要概念,特别是在Java编程语言中,它是指那些能够存储其他对象并管理它们的对象集合。容器类失效通常指的是在使用这些类时出现的错误或异常情况,导致容器无法正常工作。本篇文档...

    Java容器类的教学实践与思考.pdf

    Java容器类是Java编程中的核心概念,主要用于存储和管理对象。在Java程序设计课程中,容器类的教学至关重要,因为它们提供了动态数据结构,使得开发者能够高效地组织和操作数据。然而,由于容器类的深入理解需要数据...

    Java容器类学习心得.pdf

    Java容器类是Java集合框架的重要组成部分,它为处理对象集合提供了数据结构和算法的支持。本篇文章将重点介绍Java容器类中Collection接口、Map接口、Iterator接口以及List、Set和Map的实现类。 首先,Collection...

    Java容器类的深入理解

    Java容器类是Java编程中非常重要的一部分,它们为数据存储提供了丰富的结构和操作。本文主要关注的是Java中的两种主要容器类型:Collection和Map,以及它们的一些具体实现,如List接口下的ArrayList、LinkedList和...

Global site tag (gtag.js) - Google Analytics