我的问题非常基本,为什么我们人们使用@Override注释,这个注释的重要性是什么?
在旧JDK中为什么它不显示为警告,但在最新的JDK中它需要那么为什么..?
我很想知道人们认为哪些Java注释在开发过程中最有用.这不一定限于核心Java API,您可以包含您在第三方库中找到的注释或您自己开发的注释(确保包含指向源的链接).
我真的对常见的开发任务很感兴趣,而不是知道为什么@ManyToOne(optional=false)JPA很棒......
包括注释和对一般开发有用的原因的描述.
我在java中使用了@Override,并且非常方便.c#中有类似的东西吗?
我通常不用Java编写代码,但最近我开始没有选择.我可能对如何正确使用HashSet有一些重大误解.所以我可能做的事情可能是完全错误的.但是我很感激您提供的任何帮助.那么实际问题:
在我写的一个小程序中,我生成了非常相似的对象,这些对象在创建时会有一个非常具体的id(a string或在我的上一次迭代中long).因为每个对象都会产生新对象,所以我想过滤掉我已创建的所有对象.所以我开始将每个新对象的id抛入我的Hash(Set)并测试HashSet.contains(),如果之前创建了一个对象.这是完整的代码:
// hashtest.java
import java.util.HashSet;
class L {
public long l;
public L(long l) {
this.l = l;
}
public int hashCode() {
return (int)this.l;
}
public boolean equals(L other) {
return (int)this.l == (int)other.l;
}
}
class hashtest {
public static void main(String args[]) {
HashSet<L> hash = new HashSet<L>();
L a = new L(2);
L b = new L(2);
hash.add(a);
System.out.println(hash.contains(a));
System.out.println(hash.contains(b));
System.out.println(a.equals(b));
System.out.println(a.hashCode() == b.hashCode());
}
}
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
true
false …Run Code Online (Sandbox Code Playgroud) public class Animal {
public void eat() { System.out.println("I eat like a generic Animal."); }
}
public class Wolf extends Animal {
@Override
public void eat() { System.out.println("I eat like a wolf!"); }
}
Run Code Online (Sandbox Code Playgroud)
是否@Override确实有一些功能,或者它只是有点对此有何评论?
我正在使用JDK1.6.当我实现一个接口并在实现类中,如果我@override在我的函数名之前给出,Eclipse会抛出一个编译错误.即根据Eclipse,下面的代码是错误的.
public class SomeListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// code
}
/* other overridden methods here */
}
Run Code Online (Sandbox Code Playgroud)
如果我删除@Override注释,那么代码编译正常.这是否意味着JDK1.6不再要求我们为@override注释添加前缀?
嗨,我正在努力提高自己的java2D,首先我正在处理绘制多边形.但是,我无法在框架上看到多边形.我阅读了一些教程和示例,但正如我所说,我面临着问题.这是绘制多边形的示例代码;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Polygon;
import javax.swing.JFrame;
public class jRisk extends JFrame {
private JFrame mainMap;
private Polygon poly;
public jRisk(){
initComponents();
}
private void initComponents(){
mainMap = new JFrame();
mainMap.setSize(800, 600);
mainMap.setResizable(false);
mainMap.setVisible(true);
mainMap.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
int xPoly[] = {150,250,325,375,450,275,100};
int yPoly[] = {150,100,125,225,250,375,300};
poly = new Polygon(xPoly, yPoly, xPoly.length);
}
protected void paintComponent(Graphics g){
super.paintComponents(g);
g.setColor(Color.BLUE);
g.drawPolygon(poly);
}
/**
* @param args
*/
public static void main(String[] args) {
new jRisk();
}
}
Run Code Online (Sandbox Code Playgroud) 我读到了这样做:
public final void foo() {}
Run Code Online (Sandbox Code Playgroud)
等于:
private static void foo() {}
Run Code Online (Sandbox Code Playgroud)
两者都意味着该方法不可覆盖!
但是,如果一个方法是私有的,我自动无法访问,我看不到等价...