⑴ java 泛型對象能實例化嗎T t=new T()
java中沒法得到泛型參數化類型,因為在編譯期沒法確定泛型參數化類型,也就找不到對應的類位元組碼文件,自然就不行了
泛型反射的關鍵是獲取ParameterizedType,再調用它的getActualTypeArguments()方法獲得實際綁定的類型。但注意public class BookManager<Book>是不能被反射的,因為擦拭法的緣故。只有在Superclass 或者成員變數(Field.getGenericType())等有函數返回ParameterizedType的時候才能成功反射,
你要麼搞個構造函數把參數類型傳進去才行
⑵ c#或java里子類對象賦值給父類有什麼用,舉幾個例子啊。
里氏替換原則:
定義一:如果對每一個類型為S的對象o1,都有類型為T的對象o2,使得以T定義的所有程序P在所有的對象o1都代換成o2時,程序P的行為沒有發生變化,那麼類型S是類型T的子類型。
定義二:所有引用基滑租類的地方必須能透明地使用其子類的對象。
大概的要求是:
1、父類對象指向子類實例,向上轉型和向下轉型是里氏替換的一種應用。
2、子類必須完全實現父類的方法,父類對象出現的地方都可以用子類對象進行替換。
這是里氏替換的主要內涵,下面對這兩種體現分別進行代碼舉例。
定義一個抽象類Person:
public abstract class Person{
public abstract String getDetails();
}
用Student類來繼承Person
public class Student extends Person{
private String stuName;
private int age;
private double score;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String stuName, int age, double score) {
super();
this.stuName = stuName;
this.age = age;
this.score = score;
}
@Override
public String getDetails() {
// TODO Auto-generated method stub
return this.stuName + this.age + this.score;
}
}
在Test類裡面可以用:
Person person = new Student();//這舉笑是向上轉型。
也可以定義:
Student student = new Student(「stu」,19,99);
可以將student對象用在所有應該使用Person類型的地方。
Private List<Person> person = new ArrayList<Person>信答兆();
Person.add(student);
⑶ java語言,什麼是初始化啊初始化和實例化一樣嗎
java中不管對象也好,還是基本數據類型也好,你聲明它的時候,它們都稱為變數,在你使用變數前給變數進行賦值,這就是變數的初始值,因此叫變數初始化。
實例化是指對象的創建,一般是指通過 new 關鍵字(當然還有其他途徑,比如反射),在堆中為對象分配內存,這就是實例化。舉個非常簡單的例子,你知道飛機會飛,但飛機在你腦海里只是個概念,當真的把飛機製造出來,變成實實在在的,存在於物質世界(java中稱內存)的東西時,你才能用它來飛。如果在物質世界(內存)中根本就不存在,那就無法使用。因此,實例化可以說將概念(類),變成實際存在(內存中存在)的過程就稱為實例化。
⑷ 求Java自學視頻 從基礎教程到進階實例,萬分感謝啊 。
詳細,包含知識點多的,你可以看看動力節點java基礎視頻大全。裡面有很多深入且精彩的講解,比如源碼分析分析講的特別到位,尤其是HashMap的工作原理和源碼分析,真正的把jdk源碼翻了一遍,要是拿著這個去面試絕對是秒殺級神器。
⑸ 求java工廠模式的一個簡單代碼例子,盡量簡單
這個應該比較簡單一點。
某系統日誌記錄器要求支持多種日誌記錄方式,如文件記錄、資料庫記錄等,且用戶可以根據要求動態選擇日誌記錄方式。現使用工廠方法模式設計該系統,並寫出相應Java代碼。
interface Log{
public void writeLog();
}
class FileLog implements Log{
public void writeLog(){
System.out.println("文件記錄");
}
}
class DatabaseLog implements Log{
public void writeLog(){
System.out.println("資料庫記錄");
}
}
interface LogFactory{
public Log createLog();
}
class FileLogFactory implements LogFactory{
public Log createLog(){
return new FileLog();
}
}
class DatabaseLogFactory implements LogFactory{
public Log createLog(){
return new DatabaseLog();
}
}
public class Client{
public static void main(String[] args) {
try{
Log log;
LogFactory factory;
//這里可以改成使用DOM和Java反射機制讀取XML文件,獲取工廠類名
factory=new DatabaseLogFactory ();
log=factory.createLog();
log.writeLog();
}
catch(Exception e){
System.out.println(e.getMessage());
}
}
}