2012-06-26 74 views
0

因为我的问题的一部分是我不知道该怎么称呼它,所以我在标题中使用引号“内联声明”。我对Java和编程一般都很陌生,所以“内联声明”这个短语是我能够描述我正在谈论的Google或其他搜索引擎的最接近的内容,而且我还没有找到任何答案。据我所知,它根本不是一个“声明”(尽管我认为它是,因为我查了声明,实例化和初始化之间的区别)。希望我能更好地解释我的意思。如何让Eclipse识别“内联声明”?

我的意思是这样的:如果我宣布Java中的对象,然后分别对其进行初始化,像这样:

BufferedImage buffImg; 
    buffImg = ImageIO.read("MyImage.jpg"); 

然后Eclipse将打开对象名称(buffImg在这种情况下)的特殊颜色,将它添加到Outline中,并且通常将它视为一个对象。它可以用关键字,字符串,注释做同样的事情......你明白了。

但是,如果我做了一个“在线申报”,在这里我声明,实例化和初始化对象都在同一行,像这样:

BufferedImage buffImg = ImageIO.read("MyImage.jpg"); 

然后Eclipse不把它特殊的色彩,不会将它添加到Outline中,并且通常将它视为任何随机的,非特殊的单词,但有一个例外:代码高亮显示仍将在整个代码中挑出该单词的所有实例。

我的问题,然后,分别是:

  1. 你所说的做这种“全上一行”的宣言,让我知道要放什么东西的话在谷歌的未来?
  2. 如何让Eclipse识别它?

谢谢!

+0

我不知道你所描述的特殊名称,虽然它很常见。我不确定为什么你的Eclipse版本显示不同的着色方案,但一个使用与另一个使用。 – BlackVegetable

+0

这绝对是一个声明。它声明了一个变量“buffImg”。但是,您不指定它是本地变量声明还是实例变量声明。实例变量总是被初始化,没有声明的但未初始化的实例变量。巧合的是,Eclipse并没有给出局部变量的特殊格式,所以这可能是你的情况。 –

+0

@BlackVegetable:“我的Eclipse版本”?这是否意味着您的版本可以识别“内联”类型?我正在使用Indigo - 这是该版本的一个已知错误吗?也许这是一个很好的借口,让朱诺... – xrmaxwell

回答

1

1.-单语句声明和初始化没有特别的词,它是在java中初始化变量的常用方法。

2.-我认为你的困惑可能来自场和局部变量。 尽管使用了初始化类型,但是本地变量却没有,字段被Eclipse突出显示。字段总是显示在轮廓中,局部变量不显示。

关于在Eclipse中识别局部变量,您可能想看看SO:Show All Local Variables in Eclipse中的这个答案,也可以查看关于局部变量和字段的更多信息,您可能需要看看:The Java Tutorials: Variables

Fields are on Outline Local Variables are not.

商祺!

+0

啊哈!我懂了。感谢您的回答,以及有用的链接! – xrmaxwell

0

如果您正在做一个方法中的第一个示例,它可能会将buffImg添加到Outline中作为警告。尽管非常短暂,但您仍然没有初始化。最佳做法是您的一体化声明加上单行的初始化。如果您无法立即设置本地变量,请将其初始化为空,然后再重新分配。

+0

具体而言,我制作了一个小程序,因此就第一个示例而言,“未初始化”(如它实际上正在将它初始化为一个默认值)声明是在类内部立即完成的(后面的文件被命名)。第二行,单独的初始化在init ()方法,并且我感谢你确认了我最初的假设,即“内联”方式是最佳实践,因为初始化两次似乎很愚蠢,并且浪费了大量的垂直空间,因此只能在上CE。我只希望我能告诉Eclipse! – xrmaxwell

+0

我相信你是说第一个例子中的两行是分开的。第1行在类块内部;第2行在init方法中。在这种情况下,buffImg是一个类字段声明。那时候没有初始化是完全可以的。它正在被改变颜色,并被添加到类型轮廓(或其他称为),因为它被识别为一个字段。 在第二个例子中,如果你在init()方法内完成了整行,那么buffImage是一个本地引用。没有颜色变化。 –

+0

感叹。日食是一种颜色变化的纳粹......至少我仍然可以喝汤。感谢信息=) – xrmaxwell