[英]Java Android issue: keyword — new
我是Android新手。 我真的很困惑這個問題。 例如,有兩個Java文件。
One.java
Two.java
我想使用Two.java中的某些函數或參數,所以我要這樣做。
Two two = new Two();
two.something;
或者我可以這樣做:
public class One(){
private Two two;
public One(Context context){
two = (Two) context;
}
public void func(){
two.something;
}
或者像這樣:
public class One(){
Two two;
public void func(){
two = new Two();
two.something;
}
}
這些方式之間有什么區別?是否還有其他方式? 謝謝!
在您的兩個類的實例One
和實例類的One
包含類的一個實例Two
。
如果您的第一個示例(如@Serdar指出),則兩個為null。 您解決在你的第二個例子,但每次通話時間func()
更換舊Two
以新Two
。
另一種選擇是在One
的構造函數中創建Two
的實例,尤其是在Two
的構造函數需要可以傳遞給One
的構造函數的參數的情況下One
public class One
{
private Two two;
public One()
{
two = new Two();
}
public void func()
{
two.something;
}
}
您的兩個示例所做的事情截然不同。
讓我們考慮示例1:
您在類One中包含類2的私有實例。 您可以使用第二行two=(Two)context;
將Context的實例轉換為Two two=(Two)context;
僅當上下文引用類2的對象或從類2派生的對象時,這才起作用。 而且,僅當Context本身是層次結構中Two的基類時,它才有效。 否則,您將收到ClassCastException。
讓我們考慮示例2:
通過執行two=new Two();
您正在分配類2的新實例。 這與在示例1中所做的轉換不同,因為您假定上下文中已經存在2的基礎實例。 另外,第二行two.something;
將訪問類2的成員“內容”。 它沒有傳遞任何參數或調用任何函數。 根據是什么(函數或數據成員),您可以在有函數的情況下調用它或將其分配給它。
似乎您需要閱讀Core Java。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.