- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写这段代码,我碰巧将类型作为原始类。现在,如果我将变量与其子类(扩展类)一起插入,则会出错。我正在运行一个 Spigot 插件,但显然这个问题与 Spigot 本身无关,而是我对 Java 缺乏了解。
我想不出任何单一的解决方案,而且我已经到处寻找。
编辑(我的解释):如果您查看 PlayerClass,您将看到一个名为 Kit 的变量,它使用 KitClass 类型。如果您查看 KitClass,您会发现它是一个具有一个名为 Alchemist 的子类的类。我的问题是,KitClass类型是否包含所有继承的类和原始类?如果不是,那么我必须对 PlayerClass 中的 Kit 变量使用什么类型/修改才能允许将 Alchemist 类的实例设置为 Kit 变量?
package me.kckeith.KitPvP;
import org.bukkit.entity.Player;
public class PlayerClass {
public Player Player;
public double Coins;
public KitClass Kit;
public PlayerClass(Player Player, double Coins, KitClass Kit) {
this.Player = Player;
this.Coins = Coins;
this.Kit = Kit;
}
public void setKit(KitClass Kit) {
this.Kit = Kit;
this.Kit.giveStuff();
}
}
package me.kckeith.KitPvP;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import net.md_5.bungee.api.ChatColor;
public class KitClass {
public Player Player;
public Material InventoryIcon;
public KitClass(Player player) {
this.Player = player;
}
public void giveStuff() {
Bukkit.getServer().getConsoleSender().sendMessage(ChatColor.GOLD + "Given items!");
}
}
package me.kckeith.KitPvP.Kits;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import me.kckeith.KitPvP.KitClass;
public class Alchemist extends KitClass {
public static Material InventoryIcon = Material.SPLASH_POTION;
public Alchemist(Player player) {
super(player);
}
public void giveStuff() {
// Clear items
this.Player.getInventory().clear();
// Give the player their armor
ItemStack[] Armor = new ItemStack[4];
Armor[0] = new ItemStack(Material.LEATHER_BOOTS);
Armor[1] = new ItemStack(Material.LEATHER_LEGGINGS);
Armor[2] = new ItemStack(Material.LEATHER_CHESTPLATE);
Armor[3] = new ItemStack(Material.LEATHER_HELMET);
// Add Enchants
Armor[0].addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
Armor[1].addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
Armor[2].addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
Armor[3].addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, 1);
// Give Armor
this.Player.getInventory().setArmorContents(Armor);
// Give Golden Sword
ItemStack GoldenSword = new ItemStack(Material.GOLDEN_SWORD);
GoldenSword.addEnchantment(Enchantment.DURABILITY, 1);
this.Player.getInventory().addItem(GoldenSword);
// Give Regen Potions
ItemStack RegenPotion = new ItemStack(Material.POTION, 4);
PotionMeta RegenPotionMeta = (PotionMeta) RegenPotion.getItemMeta();
RegenPotionMeta.addCustomEffect(new PotionEffect(PotionEffectType.REGENERATION, 20, 2), true);
RegenPotion.setItemMeta(RegenPotionMeta);
this.Player.getInventory().addItem(RegenPotion);
// Give Damage Potions
ItemStack DamagePotion = new ItemStack(Material.SPLASH_POTION, 8);
PotionMeta DamagePotionMeta = (PotionMeta) DamagePotion.getItemMeta();
DamagePotionMeta.addCustomEffect(new PotionEffect(PotionEffectType.HARM, 0, 2), true);
DamagePotion.setItemMeta(DamagePotionMeta);
this.Player.getInventory().addItem(DamagePotion);
super.giveStuff();
}
}
我认为的具体错误是 NullStackException 但我不确定。我在代码顶部更详细地讨论了这个问题。
最佳答案
My question is does the KitClass type encompass all the inherited classes and original class?
是的,所以当您创建 Alchemist
时,您仍然可以使用所有 KitClass 方法。这是正确的:Alchemist myAlchemistObject = new Alchemist(myPlayer);
您有很多可能令人困惑的代码。您不应拥有同名的类和对象/变量。
例如,在声明变量时,这不好:
public Player Player;
但这很清楚且易于阅读:
public Player player;
这又更好了,并且不会出现混淆/困惑:
public Player myPlayer;
另一个例子。这还不清楚:
PlayerClass PlayerClass = MainClass.PlayerList.get(Player.getUniqueId());
Alchemist Alchemist = new Alchemist(Player);
PlayerClass.Kit = Alchemist;
PlayerClass.Kit.giveStuff();
这很容易理解:
PlayerClass myPlayerObject = MainClass.PlayerList.get(myPlayer.getUniqueId());
Alchemist myAlchemistObject = new Alchemist(myPlayer);
myPlayerObject.Kit = myAlchemistObject;
myPlayerObject.Kit.giveStuff();
关于java - 我可以使用原始类作为类型并仍然使用它的子类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57263792/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!