Java新对象实例更改旧实例

时间:2016-03-13 09:07:12

标签: java object instances

所以我现在正试图在java中用命题逻辑构建句子,但我遇到的问题可能是基本的Java但是我已经尝试过研究它而我不知道&# 39;实际上是错的。

我遇到的问题是,当我构建一个新的复句(具有二元连接词,左侧和右侧)时,它会改变我的旧句子。如果我发起一个全新的实例而不是将其添加到KB(知识库),它如何改变以前的实例?当我运行调试器时,看起来当构造新的第二句时,它仍然使用旧实例,因为旧实例是"这"在调试器变量中。

这是我的主要方法:

 public static void main(String[] args) {

    runModusPonens();
}


public static void runModusPonens(){
    KB modusKB=new KB();
    Symbol p=modusKB.intern("P");
    Symbol q=modusKB.intern("Q");
    modusKB.add(p);
    Sentence im=new ComplexSentence(LogicalConnective.IMPLIES,p,q);

    modusKB.add(im);

    modusKB.printWorld();

    Sentence i=new ComplexSentence(LogicalConnective.AND,q,p);

    modusKB.printWorld();
}

**输出为:

首先打印出modusKB:

P

(P IMPLIES Q)

打印出第二个modusKB(在创建第二个句子之后)

P

(Q AND P)   //-->Should still be (P IMPLIES Q)**

我的ComplexSentence类

public class ComplexSentence implements Sentence{
//Sentence structure: leftSide(left hand side sentence) binarycon(connective) rightSide(right hand side sentence)
public static LogicalConnective binarycon;
public static Sentence leftSide;
public static Sentence rightSide;

public ComplexSentence(LogicalConnective connective,Sentence left, Sentence right){
    binarycon=connective;
    leftSide=left;
    rightSide=right;
}



public String toString() {
    return "("+this.leftSide+" "+this.binarycon+" "+this.rightSide+")";
}

}

注意:句子界面中没有任何内容,所以不可能。

1 个答案:

答案 0 :(得分:2)

您的问题似乎是静态成员,由ComplexSentence类的所有实例共享:

public static LogicalConnective binarycon;
public static Sentence leftSide;
public static Sentence rightSide;

使它们非静态,以便允许类的不同实例具有不同的值。