是否有这个技术的名称(方法调用返回的对象,在同一行上进行另一个方法调用)?
ApplicationServerSettings applicationServerSettings = commonAssets.getApplicationServerSettings();
String pAID = applicationServerSettings.getSetting("plivoAuthID");
而不是
ApplicationServerSettings
此外,当我第一次执行此操作时,Eclipse不会提示我导入类using (Windows.Storage.Streams.IRandomAccessStream imageDataStream = await imageFile.OpenAsync(Windows.Storage.FileAccessMode.Read))
{
int _width = Convert.ToInt32((int)imgDisplay.Width);
int _height = Convert.ToInt32((int)imgDisplay.Width);
originalBitmap = new WriteableBitmap(_width, _height);
imageDataStream.Seek(0);
await originalBitmap.SetSourceAsync(imageDataStream);
srcPixelStream = originalBitmap.PixelBuffer.AsStream();
byte[] originalPixels = new byte[4 * _width * _height];
int pixelLength = srcPixelStream.Read(originalPixels, 0, 4 * _width * _height);
byte[] ResultPixels = EdgeDetection.GreyIt(originalPixels);
srcPixelStream.Seek(0, SeekOrigin.Begin);
srcPixelStream.Write(ResultPixels, 0, pixelLength);
originalBitmap.Invalidate();
imgDisplay.Source = originalBitmap;
}
,但如果我使用第二种代码样式则会这样做。
此外,这两种风格仅仅是偏好吗?
答案 0 :(得分:7)
该技术称为method chaining。
String pAID = commonAssets.getApplicationServerSettings().getSetting("plivoAuthID");
来自wiki的定义:
方法链接,也称为命名参数惯用法,是一种常见的方法 用于在面向对象中调用多个方法调用的语法 编程语言。每个方法返回一个对象,允许 呼叫在一个声明中被链接在一起而不需要 用于存储中间结果的变量。[1]局部变量 声明是语法糖,因为人类有困难 深度嵌套的方法调用。[2] [3]方法链也称为 由于方法数量的增加,火车失事 在更多方法出现的同一行中一个接一个地发生 链接在一起[4]即使通常在它们之间添加换行符 方法
你的第二个问题:
另外,当我第一次执行时,Eclipse不会提示我导入类ApplicationServerSettings,但是如果我使用第二种代码样式则会这样做。
ApplicationServerSettings
。另一个看起来更简单的例子(除了想要介绍之外):
看看wiki示例:
class Person {
private String name;
private int age;
// In addition to having the side-effect of setting the attributes in question,
// the setters return "this" (the current Person object) to allow for further chained method calls.
public Person setName(String name) {
this.name = name;
return this;
}
public Person setAge(int age) {
this.age = age;
return this;
}
public void introduce() {
System.out.println("Hello, my name is " + name + " and I am " + age + " years old.");
}
// Usage:
public static void main(String[] args) {
Person person = new Person();
// Output: Hello, my name is Peter and I am 21 years old.
person.setName("Peter").setAge(21).introduce();
}
}
答案 1 :(得分:1)
它通常被称为流利语法。
恕我直言,这是一种风格问题,没有对错。
流利的语法更简洁,有时候是一件好事。
另一个变体对于源级调试更方便。您可以单步执行语句并检查中间结果。