2012-02-11 82 views
-1

我試圖調用類Player,但它要求我將一些方法更改爲靜態,從而創建800個警告並破壞我的整個服務器。 唯一的解決方案是修復800個警告? (告訴我訪問該方法以靜態方式如何在不使靜態的情況下調用一個類

有幾件事情需要注意:? 我需要做的是沒有把Player播放器的方法,如: 公共無效方法名(Player播放器){ 並做到這一點不通過構造函數,因爲我已經不能適用於我想要做的代碼構造。

整個方法是這樣的

public static void main(String args[]) throws Exception { 
    //args = new String[] { "true", "false", "true" }; 
    if (args.length != 3) { 
     System.err.println("USE: guimode(boolean) debug(boolean) hosted"); 
     return; 
    } 
    Config.HOSTED = Boolean.parseBoolean(args[2]); 
    Config.DEBUG = Boolean.parseBoolean(args[1]); 
    long currentTime = System.currentTimeMillis(); 
    Logger.log("Launcher", "Initiating Cache..."); 
    Cache.init(); 
    ItemEquipIds.init(); 
    Huffman.init(); 
    Logger.log("Launcher", "Initiating Data Files..."); 
    IPBanL.init(); 
    PkRank.init(); 
    TeleportLocations.initTeleportLocations(); 
    DTRank.init(); 
    MapContainersXteas.init(); 
    MapAreas.init(); 
    ObjectSpawns.init(); 
    NPCSpawns.init(); 
    NPCCombatDefinitionsL.init(); 
    NPCBonuses.init(); 
    NPCDrops.init(); 
    ItemExamines.init(); 
    ItemBonuses.init(); 
    ShopsHandler.init(); 
    NPCDefinitions.getNPCDefinitions(20); 
    Logger.log("Launcher", "Initiating Fishing Spots..."); 
    FishingSpotsHandler.init(); 
    Logger.log("Launcher", "Initiating NPC Combat Scripts..."); 
    CombatScriptsHandler.init(); 
    Logger.log("Launcher", "Initiating Dialogues..."); 
    DialogueHandler.init(); 
    Logger.log("Launcher", "Initiating Controlers..."); 
    ControlerHandler.init(); 
    Logger.log("Launcher", "Initiating Cutscenes..."); 
    CutscenesHandler.init(); 
    Logger.log("Launcher", "Initiating Friend Chats Manager..."); 
    FriendChatsManager.init(); 
    Logger.log("Launcher", "Initiating Cores Manager..."); 
    CoresManager.init(); 
    Logger.log("Launcher", "Initiating World..."); 
    World.init(); 
    Logger.log("Launcher", "Initiating Region Builder..."); 
    RegionBuilder.init(); 
    Logger.log("Launcher", "Initiating Server Channel Handler..."); 
    NPCSpawner.spawnNPCS(); 
    try { 
     ServerChannelHandler.init(); 
    } catch (ChannelException e) { 
     e.printStackTrace(); 
     Logger.log("Launcher", 
       "Failed Initiating Server Channel Handler. Shutting down..."); 
     System.exit(1); 
     return; 
    } 
    // Logger.log("Launcher", "Initiating Server Manager..."); 
    // ServerManager.main(null); 
    System.err.println("Server took " 
      + (System.currentTimeMillis() - currentTime) 
      + " miliseconds to start up."); 
    addAccountsSavingTask(); 
    addCleanMemoryTask(); 
    for (;;) 
    { 
     try { 
      Thread.sleep(10000); 
      player.sendMessage("[Server Message]: Remember to vote!"); 
      Thread.sleep(10000); 
      player.sendMessage("[<img=1>Server Message<img=1>]: Donate to Lubricant and ONLY Lubricant!"); 
      } catch (InterruptedException e) { 
      e.printStackTrace(); 
      } 
    } 
} 

另外請注意,我不能改變我的構造函數的球員,或有一個沒有任何啓動的新構造函數(IE公共播放器{}) 這裏是我的球員構造:

公共類播放器擴展實體{

public Player(String password) { 
    super(Config.START_PLAYER_LOCATION); 
    trampAmount = 1; 
    setHitpoints(100); 
    this.password = password; 
    appearence = new Appearence(); 
    inventory = new Inventory(); 
    equipment = new Equipment(); 
    skills = new Skills(); 
    combatDefinitions = new CombatDefinitions(); 
    prayer = new Prayer(); 
    bank = new Bank(); 
    controlerManager = new ControlerManager(); 
    musicsManager = new MusicsManager(); 
    emotesManager = new EmotesManager(); 
    friendsIgnores = new FriendsIgnores(); 
    dominionTower = new DominionTower(); 
    charges = new ChargesManager(); 
    runEnergy = 100; 
    allowChatEffects = true; 
    mouseButtons = true; 
    pouches = new int[4]; 
    killedBarrowBrothers = new boolean[6]; 
    SkillCapeCustomizer.resetSkillCapes(this); 
} 
+1

你究竟在哪裏使用Player player = new Player(「password」); ? – 2012-02-11 06:59:28

+0

多個類。 – 2012-02-11 07:02:06

+1

你打電話給班級玩家是什麼意思?你不能調用一個類,只能調用一個方法。你能給出更明確的代碼來說明問題嗎?上面的代碼包含了很多與實際問題沒有關係的代碼。還缺少像聲明和播放器初始化那樣的部分。 – Eelke 2012-02-11 07:21:10

回答

1

不知道一下,你是怎樣使播放器類的對象具有main()方法的類中。由於您在主方法的範圍之外創建對象,它本質上是靜態的,所以它告訴您不能在靜態上下文中使用非靜態變量。所以爲此,您可以將static關鍵字添加到您的Player變量中,以使其工作。請檢查代碼片段,並檢查,你的情況是否也可以使用。

public class StaticVariable 
{ 
    static One one = new One("New Password"); // This is what I mean, you can do. 

    public static void main(String... args) 
    {  
     StaticVariable.one.callMe(); // That's how you will call your methods now. 
    } 
} 

class One 
{ 
    String password; 

    public One(String p) 
    { 
     password = p; 
    } 

    public void callMe() 
    { 
     System.out.println("I am callMe method of class One."); 
     System.out.println(password); 
    } 
} 

否則你必須提供良好的SSCCE,該類的主要方法。

相關問題