java中如何直接导入println()
答:绝不可能。不过我们可以换一个思路实现这样的功能。
如果你觉得每次都写System.out.println()这一大长串比较麻烦,想将println直接导入过来却无法实现。特别是如果你会python这类语言后,恨不得想直接仅仅写print()这几个字符就完成打印,那么可以参考本文。
首先必须指出静态导入import static
,
import static xxx
这个语句导入的可以是静态成员,包括静态常量、静态方法和静态对象引用,但是不能导入println,因为println不是静态成员而是实例方法。(out是 PrintStream 对象的实例)
但是,我们可以认为构造一个静态方法print
,甚至为了以后方便,就将它放在某个包中。比如:
// Out.java 文件 package cn.jcstdio.base; public class Out { public static void print(Object o) { System.out.println(o); } }
然后在终端运行javac -d Out.java
,生成这个包的class文件。接下来我们就可以import static
导入和使用print
了:
// Generic.java 文件 import java.util.*; import static cn.jcstdio.base.Out.print; public class Generic { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("Java"); list.add("python"); list.add("C#"); list.add("JavaScript"); print(list); // 调用print()方法 } }
编译:
PS C:\Users\李俊才\Desktop\asdwed>javac -d . Generic
生成了Generic.class文件:
运行:
PS C:\Users\李俊才\Desktop\asdwed>java Generic
Out[i]:
[Java, python, C#, JavaScript]
- 其中:cn是生成的包的文件夹,在运行`javac -d `时自动生成:
└─cn └─jcstdio └─base