有两个类A类里面有一个public List<String> B类调用A类的函数来往List里添加内容
到了B类再调用A类的List 是空的
求dalao解决
到了B类再调用A类的List 是空的
求dalao解决
贴完整代码,仅凭楼主现在的描述完全不觉得哪里有问题。
能给具体代码吗
3TUSK 发表于 2019-10-1 12:32
贴完整代码,仅凭楼主现在的描述完全不觉得哪里有问题。
A类:
public List<String> list = new ArrayList<>();
public void add(String a){
list.add(a);
}
B类:
private Aclass ac = new Aclass():
public List<String> list = ac.list;
public void addA(){
ac.add("hello");
}
public int getSize(){
return ac.list.size();
}
大概就是这样子
吕易天 发表于 2019-10-1 13:08
能给具体代码吗
A类:
public List<String> list = new ArrayList<>();
public void add(String a){
list.add(a);
}
B类:
private Aclass ac = new Aclass():
public List<String> list = ac.list;
public void addA(){
ac.add("hello");
}
public int getSize(){
return ac.list.size();
}
大概就是这样子
1252251361 发表于 2019-10-1 14:03
A类:
public List list = new ArrayList();
public void add(String a){
- public final class A {
- public java.util.List<String> list = new java.util.ArrayList<>();
- public void add(String a) {
- this.list.add(a);
- }
- }
- public final class B {
- private A ac = new A();
- public void addA() {
- this.ac.add("hello");
- }
- public int getSize() {
- return this.ac.list.size();
- }
- }
- public final class Main {
- public static void main(String... args) {
- final B b = new B();
- b.addA();
- System.out.println(b.getSize());
- }
- }
试着跑了一遍,输出是 1。看不出问题在哪……
3TUSK 发表于 2019-10-1 14:23
试着跑了一遍,输出是 1。看不出问题在哪……
真是奇怪了,我这就一直是0,不过还是谢谢你
能贴定义
实现
包括调用的完整代码么
注意一下
你调用的到底是静态方法还是动态方法
动态方法中
调用的是一个对象么?
实现
包括调用的完整代码么
注意一下
你调用的到底是静态方法还是动态方法
动态方法中
调用的是一个对象么?
阴阳师元素祭祀 发表于 2019-10-1 15:27
能贴定义
实现
包括调用的完整代码么
代码大概是这样的
A类:
public List<String> list = new ArrayList<>();
public void add(String a){
list.add(a);
}
B类:
private Aclass ac = new Aclass():
public List<String> list = ac.list;
public void addA(){
ac.add("hello");
}
public int getSize(){
return ac.list.size();
}
1252251361 发表于 2019-10-1 22:50
代码大概是这样的
A类:
public List list = new ArrayList();
????
你这代码..
完全没给全啊
可以给整个java文件的代码么
感觉这完全没调用一个对象
阴阳师元素祭祀 发表于 2019-10-1 22:55
????
你这代码..
完全没给全啊
呃,等会我把项目源码发一下吧
阴阳师元素祭祀 发表于 2019-10-1 22:55
????
你这代码..
完全没给全啊
命令类:
public class cmd_redpack implements CommandExecutor {
private RedPackAPI rp = new RedPackAPI();
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
String cmd = command.getName();
if (cmd.equalsIgnoreCase("rp") || cmd.equalsIgnoreCase("redpack")) {
rp.send((Player) sender);
}
return true;
}
}
API类:
public class RedPackAPI {
private MessageRP m = new MessageRP();
public RedPackList rpl = new RedPackList();
public void send(Player object){
m.rp_click("2333");
rpl.add(new RedPackEX(2333,object,"money","1","30"));
}
}
红包类:
public class RedPackEX {
private Player player = null;
private String count = null;
private String value = null;
private int code;
private String type = null;
private int last = 0;
public RedPackEX(int random,Player Splayer,String Stype,String Scount,String Svalue) {
code = random;
player = Splayer;
type = Stype;
count = Scount;
value = Svalue;
}
public void setTpye(String setType) {
type = setType;
}
public void setPlayer(Player setPlayer){
player = setPlayer;
}
public void setCount(String setCount) {
count = setCount;
last = Integer.valueOf(count);
}
public void setValue(String setValue) {
value = setValue;
}
public void setCode(int setCode){
code = setCode;
}
public Player getPlayer(){
return player;
}
public String getCount(){
return count;
}
public String getValue(){
return value;
}
public int getCode(){
return code;
}
public String getLast(){
return String.valueOf(last);
}
public String openIt(Player object){
String res = null;
if (last == 0) {
res = "&c红包已全部领取完毕!";
}else {
switch (type) {
case "money":
EconomyResponse er = RedPack.getEconomy().depositPlayer(object, Double.parseDouble(value));
if (er.transactionSuccess()) {
res = "&a您获得了&b"+value+"&a元!";
}else {
res = "&c领取失败 未知错误!<RedPackEX>";
}
break;
case "credit":
CreditAPI creditAPI = new CreditAPI();
if (creditAPI.addCredit(object.getName(), Integer.parseInt(value))) {
res = "&a您获得了&b"+value+"&a点券!";
}else {
res = "&c领取失败 未知错误!<RedPackEX>";
}
break;
}
last = last - 1;
}
return res;
}
}
红包列表类:
public class RedPackList {
private List<RedPackEX> list = new ArrayList<>();
public void add(RedPackEX redPack) {
list.add(redPack);
}
public RedPackEX get(int i) {
return list.get(i);
}
public RedPackEX getByCode(int code) {
for (RedPackEX redPackEX : list) {
if (redPackEX.getCode() == code) {
return redPackEX;
}
}
return null;
}
public int size(){
return list.size();
}
public List<RedPackEX> getList() {
return list;
}
public boolean contain(int code) {
for (RedPackEX redPackEX : list) {
if (redPackEX.getCode() == code) {
return true;
}
}
return false;
}
public String open(Player player, int i) {
return list.get(i).openIt(player);
}
}
MessageRP里的函数
public void rp_click(String code) {
TextComponent tc = new TextComponent("1");
tc.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,new ComponentBuilder("点击拆开!").color(ChatColor.GOLD).create()));
tc.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND,"rpget#"+code));
tc.setColor(net.md_5.bungee.api.ChatColor.GOLD);
Bukkit.spigot().broadcast(tc);
}
监听类
public class PlayerEvents implements Listener {
private Variable v = new Variable();
private MessageRP m = new MessageRP();
private RedPackAPI rpa = new RedPackAPI();
private RedPackList rpl = null;
@EventHandler
public void onChat (AsyncPlayerChatEvent event) {
Player player = event.getPlayer();
String text = event.getMessage();
event.setFormat(event.getFormat());
if (text.contains("rpget#")) {
if (player.hasPermission(v.prem_receive)) {
String spilt = text.split("#")[1];
rpl = rpa.rpl;
if (rpl.contain(Integer.valueOf(spilt))) {
m.pprivate_(player,rpl.getByCode(Integer.valueOf(spilt)).openIt(player));
}else {
m.pprivate_(player,"&c无法找到该红包!红包数量:"+rpl.size());
}
}else {
m.pprem(player,v.prem_receive);
}
}
}
}
1252251361 发表于 2019-10-1 23:04
命令类:
public class cmd_redpack implements CommandExecutor {
private RedPackAPI rp = new Red ...
在没高亮的时候读完了代码x
你的命令
以及事件
引用的不是一个API对象
阴阳师元素祭祀 发表于 2019-10-1 23:12
在没高亮的时候读完了代码x
你的命令
谢谢,我明白了
1252251361 发表于 2019-10-1 23:04
命令类:
public class cmd_redpack implements CommandExecutor {
private RedPackAPI rp = new Red ...
你两个RedPackAPI的实例不一样啊,你PlayerEvents和cmd_redpack里面的RedPackAPI的实例不是同一个,那么RedPackList自然也不是同一个
吕易天 发表于 2019-10-2 12:51
你两个RedPackAPI的实例不一样啊,你PlayerEvents和cmd_redpack里面的RedPackAPI的实例不是同一个,那么R ...
已经明白了 谢谢