簡體   English   中英

Java Android問題:關鍵字-新

[英]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。

這不是特定於Android的,而是關於Java語言的。 既然您是在問這個問題,我想您對Java也很陌生。 您將要查看Java教程,尤其是“ 類和對象”一章中的“ 創建對象 ”。 但是,在第二個示例中,您正在執行的是類型轉換,而不是實例化。

歡迎使用Java! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM