這個問題是由于在寫JJ文件的時候,并沒有設置生成的JAVA類為非靜態的,那么在JAVACC生成類的時候會默認生成靜態類.如果是靜態類的話,在調用的時候就只能用靜態方法調用.
創新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站設計制作、成都網站建設、企業官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的恒山網站設計、移動媒體設計的需求,幫助企業找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!
靜態調用,我一直都沒有調用成功,最后無奈之下,還是修改了JJ文件,重新生成.
在JJ文件的開頭,加上option,設置其生成非靜態類,如下:
//這個是包名,具體包的劃分以及繼承類包的層次請參閱JAVA方面的書籍
//在這個例子里面 類A 和類B 是在同一個包下
//package a;
//A類,這個類是 父類
public class A {
//a 是A類的私有屬性
private String a = "我是a";
//b 是可以被繼承的屬性
public String b = "我是b";
//該方法可以被繼承
//雖然 屬性a 不能被繼承,
//但是可以通過構造公有方法來實現對屬性 a 的調用
public String getA(){//獲取屬性a的值
return a;
}
//該方法可以被繼承
//雖然 屬性a 不能被繼承,
//但是可以通過構造公有方法來實現對屬性 a 的調用
public void setA(String aa){//對屬性a進行設置
a = aa;
}
//該方法可以被繼承
public String getB(){//獲取屬性b的值
return b;
}
//該方法可以被繼承
public void setB(String bb){//對屬性b進行設置
b = bb;
}
}
//---------------------------我是分類符------------------------
//package a;
//B 類,這個類是 A 類的子類(繼承類)
public class B extends A {
//B類是新建立的類,最好不要寫在和A類同一個java文件下
//由于 B 類繼承了A類,
//所以 A 類注明的公有方法可以不用寫在 B 類中
//只需要聲明并實例化 B 的對象就可以調用 A 類中的公有方法
//B 類 中也可以書寫 A類中沒有的方法以達到B類所需要達到的目的
//其他訪問權限修飾符在這里先不做解釋(protected等)
//屬性c 是 A 類中沒有的
String c = "我是B類中的c";
//該方法A類中沒有,只能通過聲明并實例化B類的對象才能調用
public String getC (){
return c;
}
//該方法A類中沒有,只能通過聲明并實例化B類的對象才能調用
public void setC(String cc){
c = cc;
}
//main方法
public static void main(String[] args) {
B b = new B();
//String a1 = b.a;//這個就是錯誤的,因為a是A類的私有變量,不能被繼承
String b1 = b.b;//這個就可以
String b_a = b.getA();//也可以調用
String b_b = b.getB();//也可以調用
System.out.println("a 的值 = " + b_a);
System.out.println("b 的值 = " + b_b);
b.setA("修改a");//設置a 的值
System.out.println("修改過后的 a 的值 = " +
b.getA());
b.setB("修改b");//設置b 的值
System.out.println("修改過后的 b 的值 = " +
b.getB());
String b_c = b.c;//設置c 的值
System.out.println("B類中c的值"+b_c);
b.setC("修改c");
System.out.println("修改過后的 c = " + b.getC());
}
}
如果全局變量的類型是“public static final”的,那么變量的值是不會被改變的;
如果全局變量的類型是“public static ”的,那么變量的值是可以被隨意改變的;
解釋:在java中final變量表示的是最終的,也就是在程序初始化加載到內存中,之后不可以被任何對象修改,如果沒被定義為final的話,可以重新賦值的。
Test tt=new Test();
tt=test;
tt.setId("2");
注意Test tt這里的tt只是一個對象的引用,就好像C中的指針一樣
tt=test;這句話是把test引用指向的對象的地址交給tt,即tt跟test指向了同一個對象
要達到你的目的,可以采用以下方法:
第一,Test tt=new Test();后把test的每個屬性的值賦給tt
第二,就是克隆了,clone函數,原理跟上面一樣,不過更復雜,涉及到深復制和淺復制問題
網站標題:java中cc修改代碼 java decompiler修改class
文章地址:http://vcdvsql.cn/article28/ddcopcp.html
成都網站建設公司_創新互聯,為您提供商城網站、營銷型網站建設、品牌網站制作、網站收錄、網站維護、網站營銷
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯