当像这样使用时:
import static com.showboy.Myclass;
public class Anotherclass{}
Run Code Online (Sandbox Code Playgroud)
import static com.showboy.Myclass和之间有什么区别import com.showboy.Myclass?
使用单个语句更方便,更清晰
import java.awt.*;
Run Code Online (Sandbox Code Playgroud)
而不是导入一堆个别类
import java.awt.Panel;
import java.awt.Graphics;
import java.awt.Canvas;
...
Run Code Online (Sandbox Code Playgroud)
在import声明中使用通配符有什么问题?
刚收到评论评论我静态导入该方法并不是一个好主意.静态导入是来自DA类的方法,该类主要使用静态方法.因此,在业务逻辑的中间,我有一个似乎属于当前类的da活动:
import static some.package.DA.*;
class BusinessObject {
void someMethod() {
....
save(this);
}
}
Run Code Online (Sandbox Code Playgroud)
审稿人并不热衷于我改变代码而我没有,但我确实同意他.给出非静态导入的一个原因是,在定义方法的地方很混乱,它不在当前类中而不在任何超类中,所以它也有一段时间来识别它的定义(基于Web的审查系统没有可点击的IDE之类的链接:-)我真的不认为这很重要,静态导入仍然很新,我们很快就会习惯定位它们.
但另一个原因,我同意的是,一个不合格的方法调用似乎属于当前对象,不应该跳转上下文.但如果确实属于它,那么扩展超级类是有意义的.
所以,当它是有意义的静态导入的方法呢?你什么时候做的?您是否喜欢不合格电话的样子?
编辑:流行的观点似乎是静态导入方法,如果没有人会把它们混淆为当前类的方法.例如,java.lang.Math和java.awt.Color中的方法.但是如果abs和getAlpha不模糊,我不明白为什么readEmployee是.在许多编程选择中,我认为这也是个人偏好的事情.
感谢您的回复,我正在结束这个问题.
是否有任何充分的理由避免Java中未使用的import语句?据我所知,它们适用于编译器,因此许多未使用的导入不会对编译的代码产生任何影响.它只是为了减少混乱并避免命名冲突吗?
(我问,因为Eclipse给出了一个关于未使用的导入的警告,这在我开发代码时有点烦人,因为我不想删除导入,直到我很确定我已经完成了设计类的操作.)
是否会在编写导入时将开销加载到一个包中的所有类型(import java.*); 而不只是一个特定的类型(即import java.lang.ClassLoader)?第二个是比另一个更合适的使用方式吗?
我只想输出电流而且我写了
import java.util.*;
Run Code Online (Sandbox Code Playgroud)
在开始时,和
System.out.println(new Date());
Run Code Online (Sandbox Code Playgroud)
在主要部分.
但我得到的是这样的:
Date@124bbbf
Run Code Online (Sandbox Code Playgroud)
当我将导入更改为import java.util.Date;代码完美时,为什么?
====================================
问题是,好吧,我的源文件是"Date.java",这就是原因.
嗯,这完全是我的错,我让所有人感到困惑; P
谢谢以下所有人.这真的很好你;)
我喜欢新的静态工厂方法Comparator,因为它们允许以非常简洁且不易出错的方式实现比较器.
但推荐的实施方式是Comparable什么?我们应该在Comparable实现中使用Comparators吗?
public MyClass implements Comparable<MyClass>{
...
public int compareTo(MyClass other){
Comparator<MyClass> naturalOrderComparator =
Comparator.comparing(MyClass::getFoo)
.thenComparing(MyClass::getBar);
return naturalOrderComparator.compare(this, other);
}
}
Run Code Online (Sandbox Code Playgroud)
甚至在对大型集合进行排序时使用静态比较器来减少大量对象的创建:
public MyClass implements Comparable<MyClass>{
private static final Comparator<MyClass> NATURAL_ORDER_COMPARATOR =
Comparator.comparing(MyClass::getFoo)
.thenComparing(MyClass::getBar);
...
public int compareTo(MyClass other){
return NATURAL_ORDER_COMPARATOR.compare(this, other);
}
}
Run Code Online (Sandbox Code Playgroud)
或者是否有另一种推荐的方法来实现Comparable与Java SE 8?
java ×10
import ×6
coding-style ×1
comparable ×1
comparator ×1
eclipse ×1
java-8 ×1
modifier ×1
overhead ×1
terminology ×1
wildcard ×1