<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>
java class.forname是什麼,讓我們一起了解一下:
forName是裝載類用的,在java裏面任何class都要裝載在虛擬機上才能執行,java.lang.Class類的forName()方法用於獲取具有指定類名的該Class的實例,此類名稱指定爲字元串參數。
java中Class.forName的作用是什麼?
首先在java裏面任何class都要裝載在虛擬機上才能執行。
1、 forName這句話就是裝載類用的(new是根據加載到內存中的類創建一個實例,要分清楚)。
至於什麼時候用,可以考慮一下這個問題,給你一個字元串變量,它代表一個類的包名和類名,你怎麼實例化它?
A a = (A)Class.forName("pacage.A").newInstance()與A a = new A()是一樣的效果。
2、jvm在裝載類時會執行類的靜態代碼段,要記住靜態代碼是和class綁定的,class裝載成功就表示執行了你的靜態代碼了,而且以後不會再執行這段靜態代碼了。
Class.forName(xxx.xx.xx)的作用是要求JVM查找並加載指定的類,也就是說JVM會執行該類的靜態代碼段。
3、動態加載和創建Class 對象,比如想根據用戶輸入的字元串來創建對象。
String str = 用戶輸入的字元串 Class t = Class.forName(str); t.newInstance();
另外,Book也是一個獨一無二的Class對象,即對象中的對象。
透過Book.java類的代碼如下:
package com.junit.demo;public class Book { private static final String defName = "《程序猿植髮》"; static { System.out.println("我是靜態代碼塊,輸出: " + defName); } //打印生產日期: public static String printProduceDate(String name) { return "我是靜態方法printProduceDate,輸出: " + name + ", produce is:" + System.currentTimeMillis(); } private String name; public Book() { System.out.println("我是Book聲明的構造方法!"); name = defName; } public String toString(String msg) { return name + msg; }}