當前位置:首頁 » 編程語言 » java介面及實現方法

java介面及實現方法

發布時間: 2024-05-04 11:05:08

java 怎麼通過反射獲取並實現這個類裡面的介面,並且實現介面中的方法

獲取當前線程的ClassLoader,通過ClassLoader獲取當前工作目錄,對目錄下的文件進行遍歷掃描。過濾出以.class為後綴的類文件,並載入類到list中,對list中所有類進行校驗,判斷是否為指定介面的實現類,並排除自身。返回所有符合條件的類。

這個方沒有考慮不同的文件格式。當程序打成jar包,發布運行時,上述的這種遍歷file的操作就失效了。只能掃描到當前方法的同級目錄及其子目錄。無法覆蓋整個模塊,遍歷文件的邏輯太啰嗦,可以簡化。

(1)java介面及實現方法擴展閱讀:

Java使用注意事項:

1、如果沒有定義環境變數classpath,java啟動jvm後,會在當前目錄下查找要運行的類文件。

2、如果指定了classpath,那麼會在指定的目錄下查找要運行的類文件。

3、PATH環境變數。作用是指定命令搜索路徑,在命令行下面執行命令如javac編譯java程序時,它會到PATH變數所指定的路徑中查找看是否能找到相應的命令程序。

4、需要把jdk安裝目錄下的bin目錄增加到現有的PATH變數中,bin目錄中包含經常要用到的可執行文件如javac/java/javadoc等待,設置好PATH變數後,就可以在任何目錄下執行javac/java等工具了。

❷ Java實現Comparable介面

Java lang Comparable介面中唯答纖一的方法是pareTo() 在該方法中可以進行簡單的相等比較以及執行順序比較 介面實現框架如下 [java] view plainprint?

public class ComparableImpl implements Comparable<ComparableImpl> {

@Override public int pareTo(ComparableImpl o) { // TODO Auto generated method stub return }

}一個類實現了Comparable介面 則說明它的實例具有內在的排序關系 就可以跟多種泛型演算法以及依賴於該介面的集合實現進行協作 依賴於比較關系的類包括有序集合類TreeSet和TreeMap 以及工具類Collections和Arrays 若一個數組中的元素實現了Comparable介面 則可以直接使用Arrays類的sort方法對這個數組進行排序 Java平台庫中的所有值類(value classes)都實現了Comparable介面

殲卜Comparable的規范說明如下 將當前這個對象與指定對象進行順序比較 當該對象小於 等於或大於指定對象時 分別返回一個負整數 零或者正整數 如果由於指定對象的類型而使得無法進行比較 則拋出ClassCastException異常

pareTo方法的實現必須滿足如下幾個限制條件 自反性 對稱性 傳遞性和非空性

一般氏舉穗來說 paraTo方法的相等測試應該返回與equals方法相同的結果 如果相同 則由pareTo方法施加的順序關系被稱為 與equals一致 如果不同 則順序關系被稱為 與equals不一致 如果一個類的pareTo方法與equals方法的順序關系不一致 那麼它仍然能正常工作 只是 如果一個有序集合包含了該類的實例 則這個集合可能無法遵循某些集合介面的通用約定 因為集合介面的通用約定是按照equals方法定義的 而有序集合使用了由pareTo施加的相等測試 下面是實現了Comparable介面的類 同時 該類還重寫了equals和hashCode等方法 [java] view plainprint?

public abstract class ZLTextPosition implements Comparable<ZLTextPosition> {

public abstract int getParagraphIndex() public abstract int getElementIndex() public abstract int getCharIndex()

public boolean samePositionAs(ZLTextPosition position) { return getParagraphIndex() == position getParagraphIndex() && getElementIndex() == position getElementIndex() && getCharIndex() == position getCharIndex() }

@Override public int pareTo(ZLTextPosition position) { final int p = getParagraphIndex() final int p = position getParagraphIndex() if (p != p ) { return p < p ? }

final int e = getElementIndex() final int e = position getElementIndex() if (e != e ) { return e < e ? }

final int c = getCharIndex() final int c = position getCharIndex() if (c != c ) { return c < c ? } return }

@Override public boolean equals(Object obj) { if (this == obj) { return true } if (!(obj instanceof ZLTextPosition)) { return false }

final ZLTextPosition position = (ZLTextPosition)obj return samePositionAs(position) }

@Override public int hashCode() { return (getParagraphIndex() << ) + (getElementIndex() << ) + getCharIndex() }

@Override public String toString() { return getClass() getName() + + getParagraphIndex() + + getElementIndex() + + getCharIndex() }

lishixin/Article/program/Java/hx/201311/26372

❸ 如何去使用JAVA中的介面

介面就是一些標准,把一些標準的制度寫成方法,例如一個汽車必須有四個輪子,就可以把製造汽車寫為一個介面,而製造四個輪子為介面必須方法,實現它的類就必須要實現製造四個輪子的方法。

語宴困灶言、程序、框架的發展都是解耦、分離依賴性的過程,例如springIOC中,將介面的實現類都配置在xml中,如果更換實現類,只需修改xml文件,而不用去修改代碼,這樣就是降低依賴性。
這個東西只能自己慢慢體會,在一個可以尺行多看看java三個特徵繼承、封裝、多態中的多態,理解了多態,介面就自然晌扮會用了。

❹ java 介面怎麼用應該怎麼實現

java語言不支持一個類有多個直接的父類(多繼承),但可以實現(implements)多個介面,間接的實現了多繼承
用法public class test implements 介面名稱
當類實現了某個Java介面時,它必須實現介面中的所有抽象方法,否則這個類必須聲明為抽象的

比較抽象類與介面
1, 抽象類與介面都位於繼承樹的上層
相同點
1, 代表系統的抽象層,當一個系統使用一顆繼承樹上的類時,應該盡量把引用變數聲明為繼承樹的上層抽象類型,這樣可以提高兩個系統之間的送耦合
2, 都不能被實例化
3, 都包含抽象方法,這些抽象方法用於描述系統能提供哪些服務,但不提供具體的實現
不同點:
1, 在抽象類中可以為部分方法提供默認的實現,從而避免在子類中重復實現它們,這是抽象類的優勢,但這一優勢限制了多繼承,而介面中只能包含抽象方法.由於在抽象類中允許加入具體方法,因此擴展抽象類的功能,即向抽象類中添加具體方法,不會對它的子類造成影響,而對於介面,一旦介面被公布,就必須非常穩定,因為隨意在介面中添加抽象方法,會影響到所有的實現類,這些實現類要麼實現新增的抽象方法,要麼聲明為抽象類
2, 一個類只能繼承一個直接的父類,這個父類可能是抽象類,但一個類可以實現多個介面,這是介面的優勢,但這一優勢是以不允許為任何方法提供實現作為代價的三, 為什麼Java語言不允許多重繼承呢?當子類覆蓋父類的實例方法或隱藏父類的成員變數及靜態方法時,Java虛擬機採用不同的綁定規則,假如還允許一個類有多個直接的父類,那麼會使綁定規則更加復雜,
因此,為了簡化系統結構設計和動態綁定機制,Java語言禁止多重繼承.而介面中只有抽象方法,沒有實例變數和靜態方法,只有介面的實現類才會實現介面的抽象方法(介面中的抽象方法是通過類來實現的),因此,一個類即使有多個介面,也不會增加Java虛擬機進行動態綁定的復雜度.因為Java虛擬機永遠不會把方法與介面綁定,而只會把方法與它的實現類綁定.四, 使用介面和抽象類的總體原則:
1, 用介面作為系統與外界交互的窗口站在外界使用者(另一個系統)的角度,介面向使用者承諾系統能提供哪些服務,站在系統本身的角度,介面制定系統必須實現哪些服務,介面是系統中最高層次的抽象類型.通過介面交互可以提高兩個系統之間的送耦合系統A通過系統B進行交互,是指系統A訪問系統B時,把引用變數聲明為系統B中的介面類型,該引用變數引用系統B中介面的實現類的實例。
public interface B
{
}
public class C implements B
{
}
public class A
{
}
B a = new C();
2, Java介面本身必須非常穩定,Java介面一旦制定,就不允許隨遇更加,否則對外面使用者及系統本身造成影響
3, 用抽象類來定製系統中的擴展點
抽象類來完成部分實現,還要一些功能通過它的子類來實現

❺ Java中的介面怎麼實現

舉個面積的例子:在java中,定義一個介面,聲明計算長方形面積和周長的抽象方法,再用一個類去實現這個介面,再編寫一個測試類去使用這個介面。首先,介面必須單獨存放,如果我們用eclipse編程的話,它們提示:The public type **** must be defined in its own file,意思是必須要定義在其自己的文件中,所以要為介面文件單獨存放起來,舉例,我們的介面滑擾要實現獲到矩形的長,寬,面積,周長,所以定義以下的介面。public interface calrect {x0dx0apublic abstract int calarea();x0dx0apublic abstract int calgirth();x0dx0apublic abstract int getx();x0dx0apublic abstract int gety();x0dx0a}注意,定義介面就像定義類一樣,介面的訪問控制符只能用public,用public定義的介面可以被所有的類和包引用,而預設的則只能罩納被同一個包中的其他類和介面引用,這符合JAVA中訪問控制符的一般要求,關於介面再引用其他介面則是後話。以上介面文件名為calrect.java.另外需要指出的是介面中不能給方法給出方法體。接下來,需要定義一個類來實現介面,因為不知道JAVA的內置矩形類是什麼名,所以為了安全,將該類定義為RRect,這可以認為是一物讓沒種安全策略。關於implements,可以參考其他資料。該類引用了介面calrect,所以必須對calrect中的方法一一實現。//定義矩形類 應用介面class RRect implements calrect{private int x;x0dx0aprivate int y;public RRect (){x0dx0a x=3;y=4;x0dx0a}x0dx0apublic int calarea(){x0dx0a return x*y;x0dx0a}x0dx0apublic int calgirth(){x0dx0a return x*2+y*2;x0dx0a}x0dx0apublic int getx(){x0dx0a return x;x0dx0a}x0dx0apublic int gety(){x0dx0a return y;x0dx0a}x0dx0a}//接下來,定義一個測試類,所謂測試類,我理解為定義一個類,在其定義類RRect的對象,並驗證其中的方法,看看是不是可以正常使用//定義Class1類x0dx0apublic class Class1{x0dx0aRRect rect;x0dx0apublic static void main(String []args){x0dx0a RRect rect=new RRect();x0dx0a System.out.println("矩陣的長"+ rect.getx());x0dx0a System.out.println("矩陣的寬"+ rect.calarea());x0dx0a System.out.println("矩陣的面積"+ rect.calarea());x0dx0a System.out.println("矩形的周長 "+rect.calgirth());x0dx0a}x0dx0ax0dx0a}運行結果:矩陣的長3x0dx0a矩陣的寬12x0dx0a矩陣的面積12x0dx0a矩形的周長 14註:介面單存放,介面實現類和測試類可以存放在一個文件中

熱點內容
電腦主機做伺服器下載快不 發布:2024-11-28 00:32:40 瀏覽:386
冷凍存儲盒 發布:2024-11-28 00:21:04 瀏覽:127
達內幼兒編程 發布:2024-11-28 00:21:02 瀏覽:320
我的世界下100層是什麼伺服器 發布:2024-11-28 00:16:50 瀏覽:548
怎麼改配置密碼 發布:2024-11-28 00:16:44 瀏覽:113
伺服器晶元v幾是什麼 發布:2024-11-28 00:15:37 瀏覽:599
家庭麥克需要什麼配置才能用 發布:2024-11-28 00:05:28 瀏覽:384
c語言then是什麼意思 發布:2024-11-27 23:54:07 瀏覽:195
提升訪問 發布:2024-11-27 23:41:39 瀏覽:821
為什麼學習編程 發布:2024-11-27 23:41:37 瀏覽:942