如何在java中使用System.out作为方法中的参数
我有一个java显示的方法 当我使用C++时,我似乎可以如何在java中使用System.out作为方法中的参数,java,Java,我有一个java显示的方法 当我使用C++时,我似乎可以 display(listnodel,OutputStream out)但是,我可以在其中输出System.out?好像输出了。写入可以吗 如果我想使用System.out作为参数,我应该怎么做?由于该成员属于同一级别,您可以执行以下操作: void display(PrintStream out) { out.println("42!"); } 为了更好地显示层次结构,请执行以下操作: Object |---OutputSt
display(listnodel,OutputStream out)
但是,我可以在其中输出System.out
?好像输出了。写入可以吗
如果我想使用System.out
作为参数,我应该怎么做?由于该成员属于同一级别,您可以执行以下操作:
void display(PrintStream out) {
out.println("42!");
}
为了更好地显示层次结构,请执行以下操作:
Object
|---OutputStream
| |---FileOutputStream
| |---FilterOutputStream
| |---PrintStream (System.out)
|
|---InputStream (System.in)
| |---FileInputStream
要解决实际问题,请考虑使用一个包含两个类的接口来实现它
例如(无异常处理):
由于该成员属于同一级别,您可以执行以下操作:
void display(PrintStream out) {
out.println("42!");
}
为了更好地显示层次结构,请执行以下操作:
Object
|---OutputStream
| |---FileOutputStream
| |---FilterOutputStream
| |---PrintStream (System.out)
|
|---InputStream (System.in)
| |---FileInputStream
要解决实际问题,请考虑使用一个包含两个类的接口来实现它
例如(无异常处理):
System.out的类型为PrintStream。是javadoc。类型的System.out是PrintStream。是javadoc。系统。out
是一个PrintStream
实例System.out.println
是对该实例的方法调用。
因此,您可以执行以下操作:
public display (ListNode l, PrintStream out) {
out.println("L is " + l);
}
System.out
是一个PrintStream
实例System.out.println
是对该实例的方法调用。
因此,您可以执行以下操作:
public display (ListNode l, PrintStream out) {
out.println("L is " + l);
}
如果System.out
在任何地方都可用,为什么要将其作为参数传递
为什么不这样做:
public void display(final String toDisplay) {
System.out.println(toDisplay);
}
如果System.out
在任何地方都可用,为什么要将其作为参数传递
为什么不这样做:
public void display(final String toDisplay) {
System.out.println(toDisplay);
}
在Java8中,人们可能也会想到方法引用
例如:
private List<ListNode> nodes = new LinkedList<>();
...
nodes.forEarch(System.out :: println);
private List nodes=new LinkedList();
...
nodes.forEarch(System.out::println);
在Java8中,人们可能还会想到方法引用
例如:
private List<ListNode> nodes = new LinkedList<>();
...
nodes.forEarch(System.out :: println);
private List nodes=new LinkedList();
...
nodes.forEarch(System.out::println);
谢谢,有没有比PrintStream更大的流家族,比如说甚至包含fileinputStream?没有!您必须区分输入流和输出流PrintStream
是一个OutputStream
FileInputStream
是一个InputStream
。因此,这两者之间不存在相等的超类FileOutputStream
和PrintStream
来自同一个超类OutputStream
。像System.in
和FileInputStream
都来自同一个超类InputStream
。谢谢,但是如果我把OutputStream out参数放出来,那么out.write就没有println了,对吗?这意味着我不能把outputStream作为参数,然后把PrintStream放在那个里,对吗?没错!但是您可以像if(out instanceof PrintStream){((PrintStream)out).println(“42!”);}
那样进行操作。但这是一个错误的方向。你应该解释一下,你真正想做什么。您可能希望实现两个新类,如ConsoleDisplay
和FileDisplay
(或更多创造性名称),以及一个带有方法Display
的接口,如Display
。考虑谢谢,有没有比PrintStream更大的流家族,比如说甚至包含fileinputStream?没有!您必须区分输入流和输出流PrintStream
是一个OutputStream
FileInputStream
是一个InputStream
。因此,这两者之间不存在相等的超类FileOutputStream
和PrintStream
来自同一个超类OutputStream
。像System.in
和FileInputStream
都来自同一个超类InputStream
。谢谢,但是如果我把OutputStream out参数放出来,那么out.write就没有println了,对吗?这意味着我不能把outputStream作为参数,然后把PrintStream放在那个里,对吗?没错!但是您可以像if(out instanceof PrintStream){((PrintStream)out).println(“42!”);}
那样进行操作。但这是一个错误的方向。你应该解释一下,你真正想做什么。您可能希望实现两个新类,如ConsoleDisplay
和FileDisplay
(或更多创造性名称),以及一个带有方法Display
的接口,如Display
。考虑