广告
返回顶部
首页 > 资讯 > 精选 >java 中newInstance()方法和new关键字的区别
  • 538
分享到

java 中newInstance()方法和new关键字的区别

newinstance()newava 2023-05-31 05:05:52 538人浏览 八月长安
摘要

java 中newInstance()方法和new关键字的区别* 它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。* 那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。*

java 中newInstance()方法和new关键字的区别

* 它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。
* 那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。
* 我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,
* 就必须保证:1、这个类已经加载;2、这个类已经连接了。
* newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。
* 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,
* 提供给了一种降耦(降低耦合度)的手段。
* 最后用最简单的描述来区分new关键字和newInstance()方法的区别:
*    newInstance: 弱类型。低效率。只能调用无参构造。
*    new: 强类型。相对高效。能调用任何public构造。

代码如下:

import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Field;  public class testInvoke {   public void work(){     System.out.println("-----------");   }    public testInvoke work(String a,Integer b){     System.out.println(a + b);     return this;   }   public void work(Integer b, int c ){     System.out.println(b + c);   }      public static void main(String[] args) throws SecurityException, NoSuchMethodException, InstantiationException,     IllegalAccessException, IllegalArgumentException, InvocationTargetException{     Class<?> clazz = testInvoke.class;     //Class<?> clazz = Class.forName("invoke.testInvoke");     //testInvoke tinvoke = new testInvoke(); Class<?> clazz = tinvoke.getClass();      System.out.println(clazz);     //如果源类的方法没有参数,则要用new Class[]{}     Method method1 = clazz.getMethod("work", new Class[]{});     Method method2 = clazz.getMethod("work", new Class[]{String.class, Integer.class});      Method method3 = clazz.getMethod("work", new Class[]{Integer.class, int.class});     Object invokeTest = clazz.newInstance();          //invoke方法的第一个参数是源类的实例,第二个参数是实例的值     Object result1 = method1.invoke(invokeTest, new Object[]{});     Object result2 = method2.invoke(invokeTest, new Object[]{"aaaa",new Integer(10)});     Object result3 = method3.invoke(invokeTest, new Object[]{3,new Integer(4)});     System.out.println(result1);     System.out.println(result2);     System.out.println(result3);      Method[] methods = clazz.getMethods();     for(Method method : methods){       System.out.println(method.getName());     }          Field[] fileds = clazz.getFields();     for(Field filed: fileds){       System.out.println(filed.getName());     }   } } 

--结束END--

本文标题: java 中newInstance()方法和new关键字的区别

本文链接: https://www.lsjlt.com/news/223784.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java 中newInstance()方法和new关键字的区别
    java 中newInstance()方法和new关键字的区别* 它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。* 那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。* ...
    99+
    2023-05-31
    newinstance() new ava
  • GO语言make和new关键字的区别
    目录1. new 和 make2. make和new比较3. new函数4. make函数make使用场景 slice map channelnew 使用场景 大部分使用在结构体当中...
    99+
    2023-05-15
    Go语言 new make关键词区别 Go语言 new make关键词 Go语言 new make
  • Go语言中new和make关键字的区别是什么
    这篇文章主要介绍了Go语言中new和make关键字的区别是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Go语言中new和make关键字的区别是什么文章都会有所收获,下面我们一起来看看吧。newnew 是一...
    99+
    2023-07-05
  • Go语言中new和make关键字有哪些区别
    本篇内容介绍了“Go语言中new和make关键字有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!newnew 是一个内置函数,它会分...
    99+
    2023-07-05
  • GO语言make和new关键字有什么区别
    今天小编给大家分享一下GO语言make和new关键字有什么区别的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. new 和...
    99+
    2023-07-06
  • Java中static和volatile关键字的区别
    1. 作用范围不同 static关键字:用于创建类级别的变量或方法,所有类的实例共享同一个static变量的副本。 volatile关键字:用于确保一个变量在多线程环境中的可见性,使所有线程都能看到最新的变量值。 2....
    99+
    2023-10-29
    关键字 区别 Java
  • java final 和instanceof 关键字的区别
    final 可以适用的范围:修饰类:使用这种修饰符的类无法被继承 修饰函数:被修饰的不能被重写 修饰属性:1.final修饰的成员变量是常量,值不能被修改  &n...
    99+
    2022-11-15
    java final instanceof
  • 详解JS中continue关键字和break关键字的区别
    目录1.框架2.简单介绍3.代码演示4.演示break1.框架 <!DOCTYPE html> <html> <head> ...
    99+
    2022-11-13
    JS continue break区别 JS continue break
  • Java中关键字finalfinallyfinalize的区别介绍
    目录1. final1.1 final修饰属性1.2 final修饰方法1.3 final修饰类2. finally3. finalize这三个除了长得像以外,好像没什么联系 1. ...
    99+
    2022-11-13
  • 关键字const和readonly的区别
    关键字const和readonly都用于声明只读变量或只读属性,但它们的用法和作用有所不同。1. const关键字:- 可以用于变量...
    99+
    2023-09-01
    区别
  • ES6 关键字 let 和 ES5 及关键字 var 的区别解析
    目录var 关键字let 关键字补充var 关键字 在 ES5 及以前,通过var在块级作用域中声明的变量,外边也可以访问。块级作用域就是一对{}的作用域;块级作用域可以是控制语句的...
    99+
    2022-11-13
  • java关键字的使用方法
    本篇内容介绍了“java关键字的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在平时写代码的时候我们会经常用到void,我们都知道他...
    99+
    2023-06-19
  • JAVA中native方法与synchronized 关键字
    native , synchronized [@more@]JAVA中native方法 @与羊共舞的狼 Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件...
    99+
    2023-06-03
  • Java重定向和路径关键字:有什么区别?
    在Java编程中,重定向和路径关键字是非常常见的概念。它们在不同的场景下起到不同的作用,但是对于初学者来说,它们往往容易混淆。本文将详细介绍Java重定向和路径关键字的区别,并给出相应的演示代码。 一、Java重定向 Java重定向是指将...
    99+
    2023-10-11
    重定向 关键字 path
  • 详细介绍Java关键字throw throws Throwable的用法与区别
    目录1. Throwable1.1 扩展-Error1.2 扩展-Exception2. throws2.1 扩展3. throw3.1 扩展4. 总结throw,意为“...
    99+
    2022-11-13
  • Java线程中的关键字和方法示例详解
    目录一、volatile关键字1,volatile 能保证内存可见性2,编译器优化问题二、wait 和 notify1,wait()方法2,notify()方法 3,not...
    99+
    2022-11-13
  • Java线程中关键字和方法的示例分析
    这篇文章主要为大家展示了“Java线程中关键字和方法的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java线程中关键字和方法的示例分析”这篇文章吧。一、volatile关键字1,vol...
    99+
    2023-06-29
  • 关于java中final关键字的使用方法详解
    一、修饰类被final修饰的类不能被子类继承。//父类Animal public final class Animal{ private int age; //年龄 private String var; //品种 public...
    99+
    2015-04-20
    java final 关键字 使用方法 详解
  • Java中static关键字的介绍和用法
    本篇内容主要讲解“Java中static关键字的介绍和用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中static关键字的介绍和用法”吧!用类名去调用static有两层含义: 可以理...
    99+
    2023-06-02
  • Java中super关键字的用法和细节
    目录前言 1. super关键字的用法2. super关键字的使用细节3. super和this关键字的比较总结前言     因为西...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作