Passing System.out.println(); as an argument in a method

arguments, java, parameter-passing, typeof, void

Solution

What you are doing here is not passing `System.out.println()` as an argument; you are trying to pass an argument to `System.out.println()`

Try changing the return type of `data()` to `String`, or `int`, or anything other than `void`, and return something of that type from it.

Also change the parameter type of `e` in the function definition of `a()` to match the return type of `data()`.

After you make these changes, calling `a(data());` will actually print something out.

Example:

public static void main(String args[]) {
    a(data());
}

// shorthand for System.out.println
static void a(String e) {
    System.out.println(e);
}

// a method that returns some data
static String data() {
    // replace this with whatever actual data you want to return
    return "This is some data...";
}

Problem

I want to pass `System.out.println();` as an argument but the compiler won't allow me to return a void type as an argument. here is what I want it for. ``` public class Array { public static void main(String args[]) { a(data()); } static void a(e) { System.out.println(e); } static void data() { ... } } ``` So What is want `a(data());` to look like after it is compiled is something like this. ``` a(data()) = System.out.println(data(){...}); ``` Eventually I want to shorthand `System.out.println()`.

Original source