Ez a szabály a javax.management.ObjectName konstruktorok tartomány részében jelöli meg a dupla perjel "//"lehetséges használatát. A JSR 255 "//" használatát tervezi a javax.management.ObjectName tartomány részében"lépcsőzetes" elválasztóként. Míg a JSR 255 nem része a Java SE 6-os változatának, addig az objektumnév tartomány részében a jövőbeli kompatibilitási problémák elkerülése érdekében nem ajánlott szerepeltetni a "//" jeleket.
Az objektumnevek a következő formátumot követik:
domain:key1=value1,key2=value2,key3=value3,*melyben változó számú kulcstulajdonság szerepelhet.
Ha alkalmazása olyan objektumneveket tartalmazó MBean komponenseket foglal magában, melyek tartománynevében dupla osztásjel található, akkor módosítania kell az érintett MBean komponensek tartománynevét.
Ez a szabály megvizsgálja az ObjectName konstruktorokat, és ha lehetséges, ellenőrzi a karaktersorozat tartomány részét, hogy az nem tartalmaz-e dupla osztásjeleket. A szabály a String literálokat vagy végleges String változókat átadó konstruktorokat is képes elemezni, melyek ugyanabban a fordítási egységben kerültek meghatározásra. Ha meg tudja vizsgálni a tartománynevet, akkor csak azokat a konstruktorokat látja el jelzővel, melyek megsértik a szabályt.
A szabály az ObjectName konstruktor változóként kódolt tartománynévvel rendelkező példányait is ellátja jelzővel, melyeket így nem lehet könnyen megvizsgálni. Végezze el saját kezűleg ezen példányok vizsgálatát, hogy ellenőrizze: a tartománynevek nem tartalmaznak dupla osztásjelet.
1. példa:
|
public MyClass {
import javax.management.ObjectName; ObjectName myObj1 = ObjectName("domain//Name:key1=value1,*"); ObjectName myObj2 = ObjectName("domaiName", "key1", "value1"); Hashtable<String,String> myHashTable = new Hashtable<String,String>(); table.put("key1", "value1"); ObjectName myObj3 = ObjectName("domain//Name", myHashTable"); } |
Az 1. példában a szabály a myObj1 és myObj3 paramétert fogja megjelölni, mivel ezek a karaktersorozatok "//" jelet tartalmaznak. A myObj2 nem kerül megjelölésre.
2. példa:
|
public MyClass {
import javax.management.ObjectName; final String myDomainName = "domainName"; ObjectName myObj1 = ObjectName(myDomainName, "key1", "value1"); final String myObjectName = "domain//Name:key1=value1"; ObjectName myObj2 = ObjectName(myObjectName); } |
A 2. példában a szabály a myObj2 objektumot igen, a myObj1 objektumot azonban nem látja el jelzővel.
3. példa:
|
public MyClass {
import javax.management.ObjectName; private ObjectName getMyObjectName(String myObjectName){ ObjectName myObj = ObjectName(myObjectName); } } |
A 3. példában a szabály jelzővel látja el a myObj objektumot, mivel a kód nem tudja meghatározni a tartománynevet.
Ehhez a szabályhoz nem áll gyorsjavítás rendelkezésre.
További információkért tekintse meg a következőket: