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