當前位置:首頁 » 編程語言 » java靜態方法泛型

java靜態方法泛型

發布時間: 2022-03-02 13:45:27

㈠ 如何調用別人寫好的泛型類我下載了一個泛型類,但是裡面有一些靜態方法,怎麼調用啊哪位指點一下

namespace.class.staticmethod()

java中!泛型中的靜態方法是不是不用類名加方法名還是直接通過方法名就可以調用啊!下面圖片為靜態

親,你這裡面不牽涉泛型。
靜態方法里只能調用本類的靜態方法,所以你的toarray必須是靜態才能被main調用。靜態方法在其他類中可以直接通過類名.方法調用

㈢ 還是關於java泛型的問題:在靜態方法中為什麼不能引用類級別的類型參數

靜態變數和靜態方法是屬於使用泛型參數的基類的,跟泛型無關。
Java目前的泛型還是偽泛型,需要在編譯的時候進行強轉。

㈣ Java泛型類為什麼不能持有靜態泛型變數

這事其實一開始我也不明白,查了很多資料都說是硬性規定:

後來又大神指點了一下,我感覺他說的非常有道理:我把他說的一句話細說成3句你看看.

  1. 靜態成員,會第一時間進入內存的,假如你說的泛型成立,你說此刻它泛型屬於什麼類型?

    明白了不?

  2. 泛型終究還是會被擦除的,只是編譯時候幫助不小,這也就等於在說,泛型是在實例化對象的時候,才確定要給出什麼類型的參數,懂了沒?

  3. 如果按照慣例靜態早就進內存了,泛型早已經確定了不是嗎?

㈤ java泛型「public static <T> void display(T t)」這是泛型方法這個<T>在void前什麼作用

這個單獨用感覺沒什麼意義 應該是用來對T做限制的 比如<T extends 某個類型> 限制T只能是什麼的之類

㈥ java 靜態方法含有泛型 會在調用的時候重新載入嗎

泛型的實現原理是類型擦除,對於static<T> void foo(T arg)這一個方法來說,不管代碼里的T有多少種類型,運行時JVM中的類型都是Object,這個方法在JVM中實際上是static void foo(Object arg),也就是運行時根本不存在泛型的概念。

㈦ java泛型問題:我能理解為什麼類型參數不能用於靜態欄位,但不理解為何在靜態方法中也不能引用類型參數

這個原理是這樣的,靜態方法中所能引用的屬性必須是靜態的,而引用參數是無法聲明為靜態的,因為靜態的屬性必須在聲明時赴值或者實例化,泛型引用變數在聲明的時候根本不知道是什麼類型,自然不可能實例化,當然也不能放進靜態方法了,手機碼字,求支持。不懂加qq詳說

㈧ java代碼求解釋,關於最大元泛型static方法,求解救啊

這涉及到泛型變體的問題。其實你的疑問點就在於

<AnyType extends Comparable<? super AnyType>>這一長串是什麼意思。

首先一步步拆解從最簡單開始:為了少寫幾個字,並排除無關信息的干擾,下面把AnyType簡寫成T

聲明一個泛型函數:

publicstatic<T>TfindMax(T[]arr);

那麼要對T進行類型約束,不然光有T沒辦法調用方法進行比較,用於比較大小的介面是Comparable<T>介面,所以我要求要調用findMax方法,則需要使用的泛型參數是Comparable<T>介面的子類:寫法如下:

publicstatic<TextendsComparable<T>>TfindMax(T[]arr);

通過此約束:

Cb=A.<C>findMax(……);//OK,因為C繼承了Comparable<B>,C又是B得子類。


這里只開了一個頭,如果你能看懂我所說的以上,再來決定下一步問我什麼,我繼續候著回答。

㈨ java泛型的問題:在靜態方法中為什麼不能

你好,我覺得最主要的原因是因為泛型擦除。
class Demo<T> {
public void add(T t) {

//...
}

}
編譯後通過反編譯:
D:\test>javap -s -p Demo
Compiled from "Demo.java"
public class Demo extends java.lang.Object{
public Demo();
Signature: ()V
public void add(java.lang.Object);
Signature: (Ljava/lang/Object;)V
}
所以,非靜態方法正是由於需要先有對象,進而在使用泛型的時候可以確定安全檢查的限制條件。
Demo<String> d = new Demo<String>() ;
d.add("str") ; //這里你就只能添加String類型的。

而靜態方法不需要構件對象,所以他在調用方法是,根本沒有判斷參數的約束條件,所以虛擬機壓根就不希望這種事情發生,所以在編譯時就報錯了。

㈩ 【Java基礎語法】如何在使用靜態方法的時候指定其泛型萬分感謝!

舉個例子:
public void f(int i, char ch, String s){}
這個方法中有三個參數,分別為int類型的i,char類型的ch,String類型的s。這三個參數的類型都已經指定了,如果實際參數類型和對應參數類型不一致,編譯器會出現錯誤。
如何才能做到可以任意指定參數的類型呢?這個時候可以使用泛型方法。舉個例子:
public <A, B, C> void f(A a, B b, C c){}
這個就是所謂的泛型方法,當向方法中傳遞參數後,編譯器會自動推斷出參數的類型,如:
f(1, "hello", 123.123);
第一個參數類型為Integer,第二個為String,第三個為Double(自動包裝機制讓基本類型自動包裝成對應的包裝類)。
泛型方法的特徵就是方法前面有對尖括弧<>,尖括弧裡面的就是類型參數,也就是說類型是個變數,要由實際的參數推斷得來。
Java中的方法就是這樣獲取泛型能力的,還有其他方式。但是static方法比較特殊,如果要使得static方法具有反省能力就必須要使用到上面的方法。
希望能解決你的問題。

熱點內容
辦公伺服器什麼系統好 發布:2025-01-11 23:50:06 瀏覽:348
boat伺服器怎麼開 發布:2025-01-11 23:48:57 瀏覽:486
安卓手機視頻怎麼快進 發布:2025-01-11 23:46:18 瀏覽:355
電腦的項目怎麼連接遠端伺服器 發布:2025-01-11 23:45:25 瀏覽:854
sql語句between 發布:2025-01-11 23:45:14 瀏覽:329
王者安卓轉換蘋果系統會損失什麼 發布:2025-01-11 23:45:13 瀏覽:739
安卓手機漲價怎麼辦 發布:2025-01-11 23:27:17 瀏覽:716
三消游戲伺服器搭建 發布:2025-01-11 23:20:01 瀏覽:248
c語言的函數不可單獨進行編譯 發布:2025-01-11 23:12:33 瀏覽:20
怎麼查信用卡查詢密碼 發布:2025-01-11 23:11:08 瀏覽:576