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);}