Java反射在Main方法的中的而应用

简介:    我们一直在学反射,反射到底是用来干什么的? 我一直也很迷糊.直到今天,终于搞清楚了。   打个比方,在JavaWeb中,如果我们想要通过用户提交的数据来决定具体调用哪个类来执行相应的功能。
 

 我们一直在学反射,反射到底是用来干什么的? 我一直也很迷糊.直到今天,终于搞清楚了。 

 打个比方,在JavaWeb中,如果我们想要通过用户提交的数据来决定具体调用哪个类来执行相应的功能。 

没有接触到发射之前我们可能会觉得 我们可以进行多个 switch 或者 if ,这样不是不可以,但是 这样程序的编制就会变得很麻烦,代码很臃肿。

反射就很好的解决了这个问题 实时的动态的加载一个类 并执行功能。  

下面就结合一个   通过执行带参数的 main方法 反射调用另一个main方法 

pavkage me.test ;//打包

import  java.lang.reflect.* ;//导入反射包 

public class   ReflectTest  //一个源文件只有一个publuc类

{  

  public staitc void main(String []args)

{    

    Method  m1=Class.forName(args[0]).getMethod("main",String[].class)  ;//获得mian方法对应的Method类  

    m1.invoke(m1,new Object[]{new String[]{"me.test.Test"}}) ; //  这两种方法执相同的功能

 m1.invoke(m1,(Object)new String[]{"1111","2222","3333"}) ;  //这两种方法执相同的功能但是 

// 我们要注意 mian方法的参数 接收的时候要进行接  解包,如果第一种外面不加 Object类型的话 那么就会报错  ,解包完成之后 剩下的就是我们的参数了 

//第二个是吧 数组 转换成了 Object对象 告诉 编译器 不需要进行解包了  ,因为数组类型也是从 Object而来的 


}

 
}

 

class  Test

{

public static  void main(String[] args)

{

for(String ar:args)

{

System.out.println(ar) ;
}
}

 

 


}

 

目录
相关文章
|
6天前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
11天前
|
Java 数据库连接 数据库
Java服务提供接口(SPI)的设计与应用剖析
Java SPI提供了一种优雅的服务扩展和动态加载机制,使得Java应用程序可以轻松地扩展功能和替换组件。通过合理的设计与应用,SPI可以大大增强Java应用的灵活性和可扩展性。
43 18
|
9天前
|
缓存 监控 Java
Java中的并发编程:理解并应用线程池
在Java的并发编程中,线程池是提高应用程序性能的关键工具。本文将深入探讨如何有效利用线程池来管理资源、提升效率和简化代码结构。我们将从基础概念出发,逐步介绍线程池的配置、使用场景以及最佳实践,帮助开发者更好地掌握并发编程的核心技巧。
|
6天前
|
SQL JavaScript 前端开发
用Java来开发Hive应用
用Java来开发Hive应用
20 7
|
6天前
|
SQL JavaScript 前端开发
用Java、Python来开发Hive应用
用Java、Python来开发Hive应用
18 6
|
8天前
|
Java
Java的方法详解
Java的方法是类中的重要组成部分,用于定义类的行为。方法可以接收参数、执行操作并返回结果。其基本语法包括返回类型、方法名、参数列表和方法体。方法支持重载,即同名但参数不同的多个方法;静态方法则直接通过类名调用,无需实例化。此外,Java还支持可变参数,允许方法接收不定数量的参数。通过访问修饰符如`public`、`protected`、`private`,可以控制方法的可见性。方法是实现类功能的基本单元,增强了程序的灵活性和复用性。
|
6天前
|
Java 数据库连接 开发者
Java中的异常处理机制:理解与应用
在Java编程中,异常处理是一个核心概念,它允许程序在遇到错误时优雅地恢复或终止。本文将深入探讨Java的异常处理机制,包括异常的分类、如何正确使用try-catch-finally块以及throw关键字。我们将通过实例来说明如何在Java应用程序中有效地捕获和处理异常,以确保程序的健壮性和稳定性。
|
6天前
|
Java 调度 开发者
Java中的多线程基础及其应用
【9月更文挑战第13天】本文将深入探讨Java中的多线程概念,从基本理论到实际应用,带你一步步了解如何有效使用多线程来提升程序的性能。我们将通过实际代码示例,展示如何在Java中创建和管理线程,以及如何利用线程池优化资源管理。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和技巧,帮助你更好地理解和应用多线程编程。
|
7天前
|
存储 负载均衡 Java
Jetty技术深度解析及其在Java中的实战应用
【9月更文挑战第3天】Jetty,作为一款开源的、轻量级、高性能的Java Web服务器和Servlet容器,自1995年问世以来,凭借其卓越的性能、灵活的配置和丰富的扩展功能,在Java Web应用开发中占据了举足轻重的地位。本文将详细介绍Jetty的背景、核心功能点以及在Java中的实战应用,帮助开发者更好地理解和利用Jetty构建高效、可靠的Web服务。
21 2
|
12天前
|
Java 程序员 编译器
Java的反射技术reflect
Java的反射技术允许程序在运行时动态加载和操作类,基于字节码文件构建中间语言代码,进而生成机器码在JVM上执行,实现了“一次编译,到处运行”。此技术虽需更多运行时间,但广泛应用于Spring框架的持续集成、动态配置及三大特性(IOC、DI、AOP)中,支持企业级应用的迭代升级和灵活配置管理,适用于集群部署与数据同步场景。