Void Function Arguments

Question:
Why does Java accept function declarations like

public void func();

but not declarations like

public void func(void);

Answer:
Java is not C. Despite the similar syntax, all C idioms do not translate to Java. In C, an empty argument list in a function prototype implies that the function may in fact accept any number of arguments of any type. ANSI C requires that a prototype have a void argument list in order for the compiler to treat it as taking no arguments. C++ changed this behavior and specified that all empty argument lists in function prototypes were implicitly void. Java does the same thing, except that Java does not support the types of C behavior that necessitate the void argument list. For example, you can pass any number of arguments of any type to a C function declared with no arguments. The following is a legal C program that demonstrates this, but you shouldn’t write code like this unless you have a very good reason.

void foo();int main() {  foo(4);  foo(8, 5);}void foo(int a, int b) {  printf("%d
", a);}

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: