Java編程中黃色嘆號(hào)表示警告,編寫(xiě)代碼的過(guò)程中出現(xiàn)以下兩種情況都會(huì)產(chǎn)生黃色嘆號(hào):
成都創(chuàng)新互聯(lián)是一家專(zhuān)注于成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)與策劃設(shè)計(jì),鄱陽(yáng)網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:鄱陽(yáng)等地區(qū)。鄱陽(yáng)做網(wǎng)站價(jià)格咨詢(xún):028-86922220
1、定義了變量或方法未使用
2、使用了過(guò)期的不推薦的類(lèi)或方法
解決黃色嘆號(hào)的方法也兩種:
1、使用Java中的壓制安全警告功能
2、刪除掉未使用的方法或變量
在Java編程中,黃色嘆號(hào)雖不影響程序的使用功能,但為了程序的可讀性,健壯性,還是建議能消除的警告盡可能的消除,這樣會(huì)使得項(xiàng)目更整潔,代碼更美觀,閱讀起來(lái)更舒服。
這4個(gè)構(gòu)造函數(shù)分別是對(duì)1個(gè),2個(gè),3個(gè),以及4個(gè)參數(shù)的處理,最好別刪,如果非要?jiǎng)h掉一些代碼的話(huà),建議刪掉前面3個(gè)構(gòu)造函數(shù),保留最后的有4個(gè)參數(shù)那個(gè),當(dāng)然最后那個(gè)也要修改
代碼:
person(String?name,int?age,int?weight,String?address){
this.name?=?name;
this.age?=?age;
this.weight?=?weight;
this.address?=?address;
}
(PS:純手打,望采納)
HashSet添加重復(fù)元素,進(jìn)行提示 , 那么可以自定一個(gè)HashSet類(lèi), 對(duì)add方法進(jìn)行重寫(xiě)即可;
參考代碼如下
import?java.util.HashSet;
//自定義一個(gè)HashSet類(lèi)
class?MyHashSetE?extends?HashSetE?{
//重寫(xiě)add方法即可,但數(shù)據(jù)已經(jīng)存在,就給出提示
//源代碼里addAll方法里還是會(huì)調(diào)用add方法;?所以不用重寫(xiě)addAll方法
@Override
public?boolean?add(E?e)?{
if(this.contains(e)){
System.out.println(e+"該數(shù)據(jù)已經(jīng)存在了");
}
return?super.add(e);
}
}
//測(cè)試類(lèi)
public?class?Test?{
public?static?void?main(String[]?args)?{
MyHashSetString?set?=?new?MyHashSetString();
set.add("Jack");
set.add("Lucy");
set.add("Jack");//重復(fù)添加會(huì)進(jìn)行提示
HashSetString?set2?=?new?HashSet();
set2.add("Apple");
set2.add("Lucy");
set.addAll(set2);?//重復(fù)添加,還是會(huì)進(jìn)行提示
System.out.println(set);
}
}
測(cè)試結(jié)果
Jack該數(shù)據(jù)已經(jīng)存在了
Lucy該數(shù)據(jù)已經(jīng)存在了
[Apple,?Lucy,?Jack]
1. 從版本3.8 M6開(kāi)始,Eclipse的(準(zhǔn)確的說(shuō):JDT的)有內(nèi)置的函數(shù),這。它是可配置的,通過(guò)一個(gè)項(xiàng)目的構(gòu)建路徑:項(xiàng)目屬性 Java構(gòu)建路徑編譯器來(lái)源 在這里宣布:Eclipse的3.8和4.2的M6-新的和值得注意的是,所謂的選擇性忽略源文件夾中的錯(cuò)誤/警告。這也是那里的截圖是從。這是鏈接錯(cuò)誤220928開(kāi)發(fā)新的函數(shù)。
2. 有這個(gè)一票,臭蟲(chóng)220928,具有自為Eclipse 3.8。請(qǐng)參考這個(gè)答案的細(xì)節(jié)。 上創(chuàng)建(或至少指向)一個(gè)名為“warningcleaner”在35插件票“馬克”:如果你堅(jiān)持使用Eclipse 3.7或更低。我認(rèn)為有很多在等待這個(gè)函數(shù)被集成到Eclipse中。 這真的很簡(jiǎn)單: 安裝插件。 右鍵單擊項(xiàng)目并選擇“添加/刪除生成的代碼自然”。 打開(kāi)項(xiàng)目設(shè)置(右鍵單擊并選擇“屬性”)。 打開(kāi)選項(xiàng)卡“警告清潔'。 選擇您想從忽略警告的源文件夾。
3. 我解決了這個(gè)maven的正則表達(dá)式替換插件-它并沒(méi)有解決 CodeGo.net,但治愈的痛苦:plugin
groupIdcom.google.code.maven-replacer-plugin/groupId
artifactIdmaven-replacer-plugin/artifactId
version1.3.2/version
executions
execution
phaseprepare-package/phase
goals
goalreplace/goal
/goals
/execution
/executions
configuration
includes
includetarget/generated-sources/antlr/**/*.java/include
/includes
regextrue/regex
regexFlags
regexFlagMULTILINE/regexFlag
/regexFlags
replacements
replacement
token^public class/token
value@SuppressWarnings("all") public class/value
/replacement
/replacements
/configuration
/plugin
請(qǐng)注意,我沒(méi)能拿到**符號(hào)來(lái)工作,所以你可能需要準(zhǔn)確地指定路徑。 參見(jiàn)下面的如何不產(chǎn)生重復(fù)@SupressWarnings
4. 我認(rèn)為最好的你能做的就是使項(xiàng)目的具體設(shè)置用于顯示警告。 窗口-設(shè)定- Java的-編譯器-錯(cuò)誤/警告 在窗體的頂部是一個(gè)鏈接,用于配置項(xiàng)目的具體設(shè)置。
5. 網(wǎng)友@喬恩暗示ant代碼來(lái)做到這一點(diǎn)。下面是我的echoAdding @SuppressWarnings("all") to ANTLR generated parser/lexer *.java/echo
echo in ${project.build.directory}/generated-sources/antlr//echo
replace dir="${project.build.directory}/generated-sources/antlr/"
summary="true"
includes="**/*.java"
token="public class"
value='@SuppressWarnings("all") public class' /
需要注意的是Ant的Replace中并沒(méi)有文本的正則表達(dá)式 所以它的令牌相匹配行的開(kāi)始如maven的正則表達(dá)式替換插件一樣。 我跑了Antlr從Maven的antrun-插件在我的Maven POM,ANTLR的maven插件沒(méi)有用的Cobertura Maven插件踢好我這樣做的。 (我知道這不是一個(gè)答案,原來(lái)的問(wèn)題,但我不能在一個(gè)格式化的Ant代碼到另一個(gè)答案,只在一個(gè)答案)
6. 我不認(rèn)為Eclipse的本質(zhì)提供了一種在目錄級(jí)做到這一點(diǎn)(但我不知道)。 你可以有生成的文件去到一個(gè)單獨(dú)的Java項(xiàng)目,并控制該特定項(xiàng)目的警告。 我一般喜歡把自動(dòng)生成的代碼在一個(gè)單獨(dú)的項(xiàng)目呢。
7. 您只能抑制警告在項(xiàng)目級(jí)別。但是,您可以配置你的問(wèn)題選項(xiàng)卡從文件或軟件包抑制警告。進(jìn)入配置,并與“關(guān)于工作組:”工作范圍。
8. 我做這幾個(gè)ANTLR的語(yǔ)法,它生成一個(gè)Javaant。 Ant構(gòu)建腳本添加@SuppressWarnings("all")一個(gè)Java文件,并@Override到另一個(gè)。 我可以看看它是如何準(zhǔn)確地做,如果你有興趣。
9. 在ANTLR 2的情況下,有可能通過(guò)appenidng抑制在生成的代碼中的警告@SuppressWarnings在類(lèi)聲明中的語(yǔ)法文件之前,例如:{@SuppressWarnings("all")} class MyBaseParser extends Parser;
10. 這可以通過(guò)從構(gòu)建路徑中排除特定的目錄來(lái)完成(下面的例子就是Eclipse 3.5) [1]調(diào)出Java構(gòu)建路徑 點(diǎn)擊projectin包資源管理器 右擊,屬性 選擇Java Build Path [2]將目錄添加到排除 來(lái)源標(biāo)簽應(yīng)包含項(xiàng)目源文件夾的詳細(xì)信息 展開(kāi)源文件夾,并找到了“排除:'屬性 選擇“排除:”,然后單擊編輯 添加文件夾到添加/添加多個(gè)選項(xiàng) 單擊Finish(完成),然后確定為Eclipse重建。
11. 該M2E生成這個(gè)小python腳本“補(bǔ)丁”.classpath文件并添加所需的XML標(biāo)記開(kāi)始與所有的源文件夾target/generated-sources。你可以從你的項(xiàng)目的根文件夾中運(yùn)行它。你需要重新運(yùn)行它時(shí),在Eclipse從M2E重新生成。和所有風(fēng)險(xiǎn)自負(fù),;-)#!/usr/bin/env python
from xml.dom.minidom import parse
import glob
import os
print('Reading .classpath files...')
for root, dirs, files in os.walk('.'):
for name in files:
if (name == '.classpath'):
classpathFile = os.path.join(root, name)
print('Patching file:' + classpathFile)
classpathDOM = parse(classpathFile)
classPathEntries = classpathDOM.getElementsByTagName('classpathentry')
for classPathEntry in classPathEntries:
if classPathEntry.attributes["path"].value.startswith('target/generated-sources'):
# ensure that the attributes tag exists
attributesNode = None;
for attributes in classPathEntry.childNodes:
if (attributes.nodeName == 'attributes'):
attributesNode = attributes
if (attributesNode == None):
attributesNode = classpathDOM.createElement('attributes')
classPathEntry.appendChild(attributesNode)
# search if the 'ignore_optional_problems' entry exists
hasBeenSet = 0
for node in attributesNode.childNodes:
if (node.nodeName == 'attribute' and node.getAttribute('name') == 'ignore_optional_problems'):
# it exists, make sure its value is true
node.setAttribute('value','true')
#print(node.getAttribute('name'))
hasBeenSet = 1
if (not(hasBeenSet)):
# it does not exist, add it
x = classpathDOM.createElement("attribute")
x.setAttribute('name','ignore_optional_problems')
x.setAttribute('value','true')
attributesNode.appendChild(x)
try:
f = open(classpathFile, "w")
classpathDOM.writexml(f)
print('Writing file:' + classpathFile)
finally:
f.close()
print('Done.')
其實(shí)任何程序都有一個(gè)入口,對(duì)java來(lái)說(shuō)就是你要執(zhí)行的那個(gè)具體類(lèi)必須有一個(gè)main方法,就想你附件中提示的,一個(gè)靜態(tài)共有的main方法。而看你寫(xiě)得的代碼很有意思是定義了一個(gè)stud的類(lèi),這個(gè)類(lèi)有靜態(tài)方法,但居然在這個(gè)類(lèi)之外又直接定義了一個(gè)私有類(lèi)Person。我估計(jì)你那個(gè)編輯器運(yùn)行的時(shí)候隨機(jī)查找類(lèi)的main方法,有時(shí)候認(rèn)為當(dāng)前類(lèi)是Person去運(yùn)行了所以提示Person找不到main方法。很簡(jiǎn)單,你吧Person定義在stud里面或者單獨(dú)寫(xiě)一個(gè)文件定義Person類(lèi)。
定義在stud里面你可以這樣寫(xiě)
public class stud{
class Person{
private String name; //聲明姓名屬性
private int age; //聲明年齡屬性
public Person(){ //無(wú)參構(gòu)造
}
public Person(String name,int age){ //取得信息的方法
this(); //在此處調(diào)用Person類(lèi)中的無(wú)參構(gòu)造方法
this.name=name;
this.age=age;
}
public String getInfo(){ return"姓名:"+name+"; 年齡:"+age; } //取得信息
}
public static void main(String[] args){
Person per=new Person("小張",23); //調(diào)用構(gòu)造實(shí)例化對(duì)象
System.out.println(per.getInfo()); //取得信息
}
}
不影響程序的運(yùn)行.
出現(xiàn)黃線警告的原因除了因?yàn)槎x的變量或方法沒(méi)有使用外。
還有就是對(duì)編寫(xiě)的代碼不確定.
例如:
Vector vec = new Vector();
一般都會(huì)報(bào)黃線警告,因?yàn)閂ector集合可以存放任何對(duì)象。所以并不確定里面存放的對(duì)象.那么就會(huì)給出黃線警告.
網(wǎng)站欄目:java重復(fù)代碼警告,java類(lèi)重復(fù)報(bào)錯(cuò)
文章網(wǎng)址:http://m.newbst.com/article40/dsssjho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站制作、網(wǎng)站策劃、關(guān)鍵詞優(yōu)化、用戶(hù)體驗(yàn)、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)