簡體   English   中英

構造函數方法調用中的參數

[英]Constructor a parameter in a method call

這種類型的傳遞構造函數是用Java調用的方法(Class_name是內部類)?

method_name(new Class_name(arguments));

如何在沒有對象實例的情況下傳遞構造函數?

實際上, new Class_name(arguments) 創建該類的新實例。 構造可能是有用的 - 它比簡潔更簡潔

Class_name instance = new Class_name(arguments);
method_name(instance);

但是你以后無法訪問instance

如前所述,您正在傳遞一個新對象。

如果您只想傳遞有關此類的信息,那么您的方法需要將Class作為參數,例如......

public void method_name(Class clz) { ... do something... )

你會這樣稱呼它......

method_name( Class_name.class);

另外一件事你想做的就是給構造函數,例如,你可以得到...

Constructor const = Class_name.class.getConstructor( ArgumentType.class, AnotherArgumentType.class, ...);

例如...

Constructor const = Class_name.class.getConstructor( String.class);

...如果你的構造函數接受了一個String參數。

然后打電話給你的方法......

public void method_name(Constructor constructor) { ... do something... )

...... ......

method_name( const );

最后一種方式是非常具體的,我懷疑它實際上是你需要的,無論你認為你可能需要什么。

new創建一個對象,並將其傳遞給該函數。 你沒有傳遞類,你正在傳遞將創建一個對象的那個類的“新”

您沒有傳遞構造函數,實例:

當你這樣做時:

MyClass myClass = new Myclass();
method_name(myClass);

你有一個MyClass的實例進入myClass 然后用myClass作為參數調用method_name

所以這可以縮短為:

method_name(new Myclass());

這些類型的用例在Decorator設計模式中非常常見,您不需要中間對象。

例:

FileReader fr = new FileReader(filename);
LineNumberReader lnr = new LineNumberReader(fr);

要么

LineNumberReader lnr = new LineNumberReader(new FileReader(filename));

查看來自nio框架的I / O類,以便更好地理解這些類型的用例。

暫無
暫無

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

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