java動態
Ⅰ java里如何實現動態時間
import java.awt.Font;
import java.util.Date;
import javax.swing.*;
public class ListTime extends JFrame implements Runnable {
JLabel lbl = null;
ListTime() {
setLayout(null);
setTitle("時間顯示");
setBounds(200, 200, 400, 300);
lbl = new JLabel("");
lbl.setBounds(20, 20, 300, 200);
lbl.setFont(new Font("Arial", Font.BOLD, 20));
add(lbl);
setVisible(true);
}
public void run() {
while (true) {
try {
Thread.sleep(1000);
lbl.setText(new Date().toString());
} catch (InterruptedException e) {
}
}
}
public static void main(String[] args) {
ListTime f = new ListTime();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Thread myThread = new Thread(f);
myThread.start();
}
}
Ⅱ java中的動態方法和靜態方法的區別
靜態方法可以直接用類名點出來方法,而普通方法需要創建類的對象後才能調用!
public class Plus1
{
public static void text()
{
System.out.println("靜態方法");
}
public void text1()
{
System.out.println("非靜態方法");
}
public static void main(String[] args)
{
//靜態方法可直接調用,無需創建對象
text();
//非靜態方法不可直接調用,需要先創建對象
Plus1 plu = new Plus1();
plu.text1();
}
}
當一個方法在多處被調用的時候,你寫成靜態方法的話就方便調用了,不然每次調用都要創建對象不麻煩嗎?況且創建對象耗內存的啊,所以開發中經常用到的方法都會寫成靜態放工具類中調用
Ⅲ 在java代碼中實現動態編譯java文件
importjavax.tools.*;
importjava.io.*;
/**
*@authorhardneedl
*/
finalpublicclassMyCompile{
/**
*@paramargs命令行參數只有1個,即待編譯的源代碼文件的絕對路徑
*@throwsFileNotFoundException
*/
publicstaticvoidmain(String...args)throwsFileNotFoundException{
JavaCompilercompiler=ToolProvider.getSystemJavaCompiler();
intr=compiler.run(null,null,null,args[0]);
System.out.println(r==0?"成功":"失敗");
}
}
Ⅳ java 中如何實現 動態聲明對象
沒太理解你要求的 實現但一般這種動態獲取類信息 在java中都是通知反射機制實現的
Java的反射API(ReflectionAPI)
Class類:要正確使用Java反射機制就得使用java.lang.Class這個類。它是Java反射機制的起源。當一個類被載入以後,Java虛擬機就會自動產生一個Class對象。通過這個
Class對象我們就能獲得載入到虛擬機當中這個Class對象對應的方法、成員以及構造方法的聲明和定義等信息。
反射API用於反應在當前Java虛擬機中的類、介面或者對象信息
功能:(Objectobject=newObject(),下面以對象object進行說明)
1)獲取類的Class對象
如果在運行時一個類的實例已經得到,你可以使用
Classc=對象名.getClass();例:Classc=object.getClass();Classs=object.getSuperclass();
如果你在編譯期知道類的名字,你可以使用如下的方法Classc=java.awt.Button.class;或者Classc=Integer.TYPE;
如果類名在編譯期不知道,但是在運行期可以獲得,你可以使用下面的方法Classc=Class.forName(「類的全路徑」);
2)獲取類的Fields,對Field進行賦值
Field[]fus=object.getClass().getDeclaredField();
Fieldfu=object.getClass().getDeclaredField(fieldName);//獲取對象object的名稱為fieldName的屬性域。
fu.setAccessible(true);//設置屬性域的訪問屬性
fu.set(object,val);//設置object對象的屬性值
3)獲取類的Method
Method[]ms=object.getClass().getDeclaredMethods()
4)獲取類的Constructor
5)新建類的實例
(A)通過Class<T>的函數newInstance
(B)通過Constructor對象的方法newInstance.
Ⅳ java動態生成方法
動態生成方法只能用反射,示例代碼如下:
public Object invokeMethod(T obj,String methodName, Object[] args){
Object object = null;
@SuppressWarnings("rawtypes")
Class ownerClass = obj.getClass();
@SuppressWarnings("rawtypes")
Class[] argsClass = new Class[args.length];
for(int i = 0, j = args.length; i < j; i++) {
argsClass[i] = args[i].getClass();
}
Method method;
try {
methodName = "get" + methodName;
method = ownerClass.getMethod(methodName, argsClass);
object = method.invoke(obj, args);
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
}
return object;
}
假如有一個對象A,裡面有方法A getAbc(Object...obj),首先把方法的參數放入數組中,Object[] args,這樣調用invokeMethod(A,Abc,args),這個的返回值就是getAbc的返回值。
Ⅵ java如何定義動態數組
去看看jdk中ArrayList的內部機制就知道如何定義了,它基礎原理就是先聲明並初始化一個指定大小的數組,當用戶往數組里添加元素時去判斷是否達到數組是最大下標,如果大於了數組下標會新建一個比原數組大數組再將原數組的內容過來,至於里邊的實現和演算法肯定不是這么簡單,詳細了解就去打開來讀讀
Ⅶ java中可以用動態數組嗎
ArrayList<Long>timeBox=newArrayList<Long>();創建一個ArrayList,在onKeyDown中獲取時間,然後動態添加進去即可。
longtime=System.currentTimeMillis();
timeBox.add(time);
Ⅷ java如何動態定義變數
Java是一門靜態語言,也就是需要經過編譯之後確定變數類型,不能動態定義變數。
Java提供了集合保存一些變數,動態添加刪除變數,還可以擴充數組大小。
Ⅸ 什麼是java動態網頁技術
特點:
1, 交互性:網頁會根據用戶的要求和選擇而改變響應。
2, 自動更新:無需手動更新HTML文檔,便會自動生成新的頁面。
3, 因時因人而變:不同的時間,不同的人訪問同一個頁面會產生不同的效果。
使用技術:
一CGI:Common Gateway Interface(公用網關介面),以前見過用VB編寫的CGI,它的最大的特點是請求的是一個應用程序*.exe。(與COM+有關)。
二,ASP:更精確的說是一個中間件,這個中間件將web上的請求轉入到一個解釋器中,在這個解釋器中將所有ASP的script進行分析,執行它,它可以調用COM對象(Active X控制項),對這個對象中的屬性和方法進行操作和調用,同時通過COM對象完成更多的工作。所以確切的說ASP的強大不在於VBScript,而在於它調用的COM組件,這些組件無限的擴展了ASP的功能(想起了以前做的一個ASP新聞網站,所有的包括數據處理層與業務邏輯層用VB的類封裝並製作為Active X控制項。最讓人心動的是它的物理四層體系結構,最後面的一層是sqlserver伺服器,然後第二台機器是微軟的COM+容器,這裡面裝載著所有Active X,第三台機器是IIS伺服器,它裡面的ASP調用COM+容器中的組件,這樣的話它的代碼非常干凈,最後一台是客戶端訪問)。
缺點:
1, 依賴winNT操作系統,依賴COM組件,更要祈禱微軟的工程師沒別給系統留下太多漏洞,它的安全性,穩定性不容樂觀。
2, 無法跨平台。
3, 無法實現企業級功能:完全的群集,負載均衡。
三,PHP(Hypertext Preprocessor)
一種HTML內嵌式的語言,它混合了C,JAVA,PERL。它支持多種資料庫sqlserver,mysql,Sybase,oracle,它可以進行面向對象編程,它是可以跨平台的。
缺點:
1, 資料庫支持的極大變化。
2, 安裝復雜。
3, 缺少企業級的支持。
4, 缺少正規的商業支持,這也是自由軟體的缺點(真的嗎?)。
5, 無法實現商品化應用的開發。
四,JSP
完全的面向對象,完全的平台無關,完全的安全可靠,完全的復雜難學(作為應用程序員,我們應該喜歡這樣的技術,有句話叫「物以稀為貴」,對不對?)。目前發現的唯一缺點:運行速度慢(必須CLASS常駐內存)。
其他優點:
1, 將內容生成與顯示分離,這也是JSP規范的終極目標;
使用JSP,WEB開發人員可以使用HTML或者XML標識來設計和格式化最終頁面。使用JSP標識或者小腳本來生成頁面上的動態內容。生成內容的邏輯被封裝在標識和JAVABEAN組件中,並且捆綁在小腳本中,所有的腳本在伺服器端運行,如果核心邏輯被封裝在標識和JAVABEAN中,那麼其他人,如web管理人員和頁面設計者,能夠編輯和使用JSP頁面,而不影響內容的生成,(不知道或不用關心內部的具體的實現)。
在伺服器端,JSP引擎解釋JSP標識和小腳本,生成所請求的內容(例如,通過訪問JAVABEAN組件,使用JDBC訪問資料庫),並且將結果以HTML(或者XML)的形式發送會瀏覽器材。這有助於保護自己的代碼,而有保證任何基於HTML的WEB瀏覽器的完全可用性。
2, 生成可重用組件;
開發人員能夠共享和交換執行普遍操作的組件,或者使得這些組件為更多的使用者或者客戶團體所使用(模塊化程序設計的一個優點)。
3, 採用標識簡化頁面開發,開發人員可以定製自己的標記庫;
4, 由於轉化為Servlet,所以它具有servlet的所有優點。
「JSP是由HTML和嵌入其中的JAVA代碼組成」。錯,那應該是JSP頁面的定義。JSP不是一個產品,它像其他JAVAAPI那樣是由SUN提供的由廠商去實現的規范,JSP規范是建立在servlet規范提供的功能之上的。
JSP與servlet的不同之處:
1,servlet是JAVA對CGI的回應,它們在伺服器上執行和解釋瀏覽器的請求,承擔客戶和其他應用程序之間的中間層角色,在完成這些任務時,servlet主要是把動態的內容混合到靜態的內容中產生HTML。
2, JSP與J2EE模型更為一致,把靜態與動態內容分離開來——分離表示和邏輯——在WEB應用程序中,它的主要目標為:在多層體系結構中簡化動態表示層。
Ⅹ java動態創建中的動態是什麼意思
java中的動態就是說伺服器返回給不同的客戶端的數據是不一樣的,不像html,html本身寫的代碼和運行後的代碼是相同的,而java中的jsp就不同,你寫的代碼是相同的,但是根據客戶端的具體請求,返回的是不同的。