Java中框架的概念,以及从配置文件中读取配置信息并加载指定类

简介:   学了反射后,也不知道反射是干什么的,那学了就没什么用了。 反射在框架中有很重要的作用,什么是框架呢? 大家在做JavaWeb开发的时候 用过JDBC吧,首先上来的时候 我们需要加载JDBC的驱动。
 

学了反射后,也不知道反射是干什么的,那学了就没什么用了。

反射在框架中有很重要的作用,什么是框架呢?

大家在做JavaWeb开发的时候 用过JDBC吧,首先上来的时候 我们需要加载JDBC的驱动。

Class.forName(...)  //每个不同的驱动对应不同的类名字 对于开发人员来说不同的人选择的驱动程序 不一样 。那么我们就需要不同的驱动类 。

我们是在JSP标签中进行了 这个类的调用,那么相对来说  JSP就是一个框架,而我们加载的这个类就是一个工具。

框架与工具的关系 就是 我们通过框架来调用类。

就好像我们在一个main方法中调用另一个类的main方法一样、、

 

 

下面是从一个配置文件中加载指定的类 :

有一个config.properties的文件内容为

className=java.util.ArrayList

 

代码为:

package me.test;
import java.util.*;
import java.io.*;
public class ReflectTest2
{
   public static void main(String[]args)  throws Exception
   {
    //面向父类的编程或者面向接口编程
    InputStream in=new FileInputStream("config.properties");   //将配置文件和InputStream关联
    Properties p=new Properties() ;                                   //定义一个Properties对象这个对象可以从 输入流中获取键值对
    p.load(in) ;                                                       //从一个InputStream中获取键值对                                    
    in.close() ;                                  //关闭输入流
    String className=p.getProperty("className") ;//获得className键的值
    Collection c1=(Collection)Class.forName(className).newInstance() ;//利用反射产生对象 我们可以根据配置文件的配置信息来加载不同的类
   
       MyTest t1=new MyTest(2,2)  ;
       MyTest t2=new MyTest(3,4)  ;
       MyTest t3=new MyTest(2,2)  ;
       c1.add(t1) ;
       c1.add(t2) ;
       c1.add(t3) ;
       c1.add(t1) ;
       System.out.println(c1.size()); 
   }
  
}
class MyTest
{
 int x;
 int y;
    public  MyTest(int x,int y)
    {
     this.x=x ;
     this.y=y ;
    }
 @Override
 public int hashCode() {
  final int prime = 31;
  int result = 1;
  result = prime * result + x;
  result = prime * result + y;
  return result;
 }
 @Override
 public boolean equals(Object obj) {
  if (this == obj)
   return true;
  if (obj == null)
   return false;
  if (getClass() != obj.getClass())
   return false;
  MyTest other = (MyTest) obj;
  if (x != other.x)
   return false;
  if (y != other.y)
   return false;
  return true;
 }
}

目录
相关文章
|
15天前
|
安全 IDE Java
Java记录类型(Record):简化数据载体类
Java记录类型(Record):简化数据载体类
99 0
|
2月前
|
Java API
深入解析Java API中Object类的功能
了解和合理运用 Object类的这些方法,对于编写可靠和高效的Java应用程序至关重要。它们构成了Java对象行为的基础,影响着对象的创建、识别、表达和并发控制。
54 0
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
127 7
|
10月前
|
Java 开发者
在 Java 中,一个类可以实现多个接口吗?
这是 Java 面向对象编程的一个重要特性,它提供了极大的灵活性和扩展性。
407 58
|
11月前
|
Java 开发者
在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口
【10月更文挑战第20天】在Java多线程编程中,创建线程的方法有两种:继承Thread类和实现Runnable接口。本文揭示了这两种方式的微妙差异和潜在陷阱,帮助你更好地理解和选择适合项目需求的线程创建方式。
182 3
|
11月前
|
Java
Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口
【10月更文挑战第20天】《JAVA多线程深度解析:线程的创建之路》介绍了Java中多线程编程的基本概念和创建线程的两种主要方式:继承Thread类和实现Runnable接口。文章详细讲解了每种方式的实现方法、优缺点及适用场景,帮助读者更好地理解和掌握多线程编程技术,为复杂任务的高效处理奠定基础。
159 2
|
11月前
|
Java 开发者
Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点
【10月更文挑战第20天】Java多线程初学者指南:介绍通过继承Thread类与实现Runnable接口两种方式创建线程的方法及其优缺点,重点解析为何实现Runnable接口更具灵活性、资源共享及易于管理的优势。
210 1
|
Oracle 安全 Java
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
JDK8到JDK28版本升级的新特性问题之在Java 15及以后的版本中,密封类和密封接口是怎么工作的
|
安全 Java
【Java集合类面试三】、Map接口有哪些实现类?
这篇文章介绍了Java中Map接口的几种常用实现类:HashMap、LinkedHashMap、TreeMap和ConcurrentHashMap,以及它们适用的不同场景和线程安全性。

热门文章

最新文章