『壹』 java中泛型怎麼強制轉換
首先你的問題得明確一些
如果把List<B>轉成B,則不用轉,直接B b = list.get(2)。
如果把List<B>轉成A,也不需要強制轉換,因為A是B的父類。父類的引用可以直接指向之類的對象,而不需要強制轉換。A a = list.get(2);就可以完成。
如果把List<A>轉成B,這需要強制轉換。也很簡單B b = (B)list.get(2);但是,前提是,當你把對象裝入List<A> list的時候,你必須實例化B對象,否則會報錯!
以下是第三種不會報錯情況的代碼,比較簡陋,但運行正確,分析原理足矣!
package a;
import java.util.ArrayList;
import java.util.List;
public class A {
public int sign = 1;
public List<A> getList(){
List<A> l = new ArrayList<A>();
for(int i=0;i<5;i++){
l.add(new A(i));
}
return l;
}
public A(int s){
this.sign = s;
}
}
package a;
import java.util.ArrayList;
import java.util.List;
public class B extends A {
public B(int s) {
super(s);
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args) {
B b = new B(1);
List<A> list = b.getList();
for(int i=0;i<5;i++){
A a = list.get(i);
B bb = (B)list.get(i);
System.out.println("A:"+a.sign+" B:"+bb.sign);
}
}
public List<A> getList(){
List<A> l = new ArrayList<A>();
for(int i=0;i<5;i++){
l.add(new B(i));
}
return l;
}
}
樓主可以把B中的new B(i)改成new A(i) ,編譯不報錯,運行就會錯了!
『貳』 java中 如何得到泛型參數的類型,並在另一個方法中使用
Java的泛型就是創建一個用類型作為參數的類。就象我們寫類的方法一樣,方法是這樣的method(String str1,String str2 ),方法中參數str1、str2的值是可變的。而泛型也是一樣的,定義泛型 一般用 T 表示. public <T> List<T> method(T t){ 方法體} 。它的參數 就是 T 一個類型,你傳什麼類型的對象,T就是什麼類型。
T將是 可變的類型。
『叄』 java中什麼是泛型,怎麼用泛型
最簡單的運用:List<String> list = new ArrayList<String>();
這個是什麼意思?
意思就是list只裝String類型的數據,別的,裝不進去
然後你就會覺得這個好像有點封裝的意思,比如LIst<Student>,封裝學生類
所以,所謂泛型就是廣泛的數據類型,你可以把它理解成封裝
『肆』 java中泛型指的是什麼
我來簡述一下泛型的知識吧:
如果一個類的後面跟上一個尖括弧,表示這個類是泛型類.
可以這樣聲明:class 名稱<泛型列表>
如:class A<E>
其中A是泛型類的名稱,E是泛型.(可以是任何對象或介面)
其中給出的泛型可以作為類的成員變數的類型,方法的類型以及局部變數的類型.類體和變通類完全一樣,由成員變數和方法構成.
舉個例子:
class Chorus<E,F>
{
void makeChorus(E person,F yueqi)
{
yueqi.toString();
person.toString() ;
}
}
--------------
上面的類中將類E和類F作為類Chorus的一部分來使用.這就是泛型類的目的,將多個類包含進一個類來使用!!!
如果你想深入理解就可以找一些書來看,一些基本的教材裡面也都有提到泛型的.
希望我說的對你有所幫助!!!
『伍』 簡述java常用3種泛型定義及其作用
泛型(Generic type 或者 generics)是對 Java 語言的類型系統的一種擴展,以支持創建可以按類型進行參數化的類。可以把類型參數看作是使用參數化類型時指定的類型的一個佔位符,就像方法的形式參數是運行時傳遞的值的佔位符一樣。
定義泛型方法語法格式如下:
定義泛型方法時,必須在返回值前邊加一個<T>,來聲明這是一個泛型方法,持有一個泛型T,然後才可以用泛型T作為方法的返回值。
Class<T>的作用就是指明泛型的具體類型,而Class<T>類型的變數c,可以用來創建泛型類的對象。
『陸』 什麼是java泛型 最好舉個例子
我來簡述一下泛型的知識吧:
如果一個類的後面跟上一個尖括弧,表示這個類是泛型類.
可以這樣聲明:class 名稱<泛型列表>
如:class A<E>
其中A是泛型類的名稱,E是泛型.(可以是任何對象或介面)
其中給出的泛型可以作為類的成員變數的類型,方法的類型以及局部變數的類型.類體和變通類完全一樣,由成員變數和方法構成.
舉個例子:
class Chorus<E,F>
{
void makeChorus(E person,F yueqi)
{
yueqi.toString();
person.toString() ;
}
}
--------------
上面的類中將類E和類F作為類Chorus的一部分來使用.這就是泛型類的目的,將多個類包含進一個類來使用!!!
如果你想深入理解就可以找一些書來看,一些基本的教材裡面也都有提到泛型的.
希望我說的對你有所幫助!!!