Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么是视图…视图?它是如何工作的?_Java_Android_Android Layout_Methods_Android Transitions - Fatal编程技术网

Java 什么是视图…视图?它是如何工作的?

Java 什么是视图…视图?它是如何工作的?,java,android,android-layout,methods,android-transitions,Java,Android,Android Layout,Methods,Android Transitions,我从以下文章中学习了转换: 他实现了方法toggleVisibility(),如下所示: public void onClick(View v) { TransitionManager.beginDelayedTransition(mRootView, new Fade()); toggleVisibility(mRedBox, mGreenBox, mBlueBox, mBlackBox); } private static void tog

我从以下文章中学习了转换:

他实现了方法toggleVisibility(),如下所示:

 public void onClick(View v) {
        TransitionManager.beginDelayedTransition(mRootView, new Fade());
        toggleVisibility(mRedBox, mGreenBox, mBlueBox, mBlackBox);
    }

    private static void toggleVisibility(View... views) {
        for (View view : views) {
            boolean isVisible = view.getVisibility() == View.VISIBLE;
            view.setVisibility(isVisible ? View.INVISIBLE : View.VISIBLE);
        }

从上面我了解到
视图。。。视图
表示方法中的所有
视图
参数。但是,我以前从未见过这个
操作符。这是怎么一回事?它是如何工作的?我在谷歌上搜索到了努特,但他找不到任何答案。有人能帮我吗?

查看。。。视图是一个可变参数。这意味着您可以向它传递任意数量的视图,这些视图之间用逗号分隔,就像它们是单独的参数一样。然后,该函数可以将该参数视图视为一个集合,并在其中传递所有参数。

..
称为varags。它允许您将任意数量的视图(0或更多)传递给该方法

例如,您可以通过以下方式调用它:

toggleVisibility(); // no views
toggleVisibility(view1); // one view
toggleVisibility(view1,view2); // two views
...
这相当于将
视图[]
数组传递给方法

编写方法调用时,编译器将传递给该方法调用的参数与具有相同名称的所有方法的列表相匹配,以便找到最适合调用的方法。
View
的零个或多个实例(所有实例必须是方法调用中的最后一个参数)可以与方法定义中的单个
View…
参数(必须是最后一个参数)匹配。在方法内部,您可以将
View…
变量视为
View[]
类型的变量(即数组)


在确定要调用的最合适的重载方法时,varargs参数的优先级最低。因此,如果您重载
toggleVisibility()
,它将编译,并且不带任何参数调用
toggleVisibility()
将调用不带参数的方法。类似地,您可以声明
toggleVisibility(View v)
,它将优先于varargs版本,但varargs中的要点是省去您定义多个具有相同名称和相同类型参数的方法的需要,这些方法只在相同类型的参数数量上有所不同。

这是varagas,它允许您向函数传递零个或多个参数。它允许您避免使用重载版本的函数或使用数组输入(一种常见的解决方法) varagas有两个规则,varagas也称为变量参数

1-每个函数只允许一个变量参数

2-变量参数应为最后一个参数

void doSomething1(字符串…值,int x){}
给出编译时错误

void doSomething2(字符串…值,int…vals)
给出编译时错误


有关更多信息,请查看

查看此问题您是指瓦拉格吗?是的。Varargs是可变参数的缩写。谢谢……但它是如何工作的呢?我的意思是方法有多个参数,而实现的只有一个后台编译器创建一个列表,其中X是变量的类型。它将该列表作为单个参数传入。在编写实现时,您将单个参数视为一个列表。谢谢。我将接受它。但请在注释中移动以上所有信息以进行回答。谢谢…但它是如何工作的?我的意思是方法有多个参数,而实现的只有一个!但如果我重载方法toggleVisibility(),会怎么样?这会导致错误吗?我不知道您的第一条规则如下: