<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; }}