❶ java調用公共類
調用math類:
public class Test {
public static void main(String[]args){
Float a=11.5f; //定義一個變數並賦值
int b=Math.round(a); //調用math類的round方法,並賦值給變數b
System.out.println(b); //輸出變數b
}
}
調用自定義公共類:
1、創建一個公共類:
public class ShuChu {
public void t1(){ //自定義方法t1
System.out.println("輸出");
}
}
2、調用ShuChu類:
public class Test {
public static void main(String[]args){
ShuChu s=new ShuChu(); //實例化公共類
s.t1(); //調用公共類的t1方法
}
}
❷ java 什麼是把方法抽取出來
就是重構->抽取方法,簡單來說就是把部分相關代碼抽取出來成為一個方法,原來代碼的位置改由調用該方法來代替。
如果你使用如Eclipse這種IDE,你可以通過選擇要抽取的代碼,滑鼠右鍵選擇重構->抽取方法,按照步驟給方法命名,確認,IDE就會幫你自動地把代碼抽取出來形成一個私有的方法,原來的位置就會被調用這個方法的代碼代替。
雖然操作步驟很簡單,也就是把代碼換個位置寫,但實際隱含著程序設計的合理性和細粒度的考慮:
很明顯你的代碼里有超長的方法,一般方法會控制在10行以內,超過10行就可以認為有代碼是可以提取出來成為公用方法的。超長的方法常常意味著高耦合、低內聚,重用性差和該類的職責太多。舉個例子:
你的Servlet方法可能幹了很多響應用戶的操作,但有可能Servlet的另一個方法需要做其中一部分相同的操作,或者另外一個Servlet(一個Web應用有多個Servlet很正常)也需要同樣的操作,更甚是一個本地的控制台應用程序(Servlet是屬於會話層的,桌面應用程序一般不需要會話層)也需要做同樣操作。這時候你會發現寫在你的Servlet的代碼只能拷貝到另一個程序中,或者壓根就得重寫,效率很低而且這樣你的代碼里會有很多重復代碼...以後改一下就得改3個地方,不可維護的代碼就是這樣來的。同時你的超長方法也是難以理解的。
如何把握好程序的合理性需要很多的經驗和設計技巧,這里就不提及了。有興趣可以向著面向對象程序設計這個方向鑽研。
❸ java 多線讀取公共變數
t1 t2J是新開的線程 Common是在主線程中
可以讓主線程休眠一定時間,但這只是理論上,因為無法確定t1 t2運行時間也就不能確定主線程睡眠的時間
好像Thread中有一個join()方法 在主線程中調用t1.join() 可以實現主線程掛起 直至t1運行完
❹ 在JAVA中,怎麼利用反射獲取一個方法
java中利用反射獲取方法:
1.先找到方法所在類的位元組碼
2.找到需要被獲取的方法
Class類中獲取方法:
public Method[] getMethods();獲取包括自身和繼承(實現)過來的所有的public方法——Method不支持泛型<>,即後面不接<>
public Method[] getDeclaredMethods();獲取自身所有的方法(private、public、protected,和訪問許可權無關),不包括繼承的
public Method[] getMethod(String methodName, Class<T>...parameterTypes);表示獲取指定的一個公共的方法,包括繼承的
參數: methodName:表示獲取的方法的名字
parameterTypes:表示獲取的方法的參數的Class類型
public Method[] getDeclaredMethod(String methodName, Class<T>...parameterTypes);//表示獲取本類中的一個指定的方法(private、protected、public,與訪問許可權無關),不包括繼承的方法。
參數:methodName: 表示被調用方法的名字
parameterTypes:表示被調用方法的參數的Class類型如String.class只有通過方法簽名才能找到唯一的方法,方法簽名=方法名+參數列表(參數類型、參數個數、參數順序)。
public Method getDeclaredMethod(String name,Class... parameterTypes):表示調用指定的一個本類中的方法(不包括繼承的)
參數: methodName: 表示被調用方法的名字
parameterTypes:表示被調用方法的參數的Class類型如String.class
舉例:
classP{
publicvoidt1(){}
voidt2(){}
privatevoidt3(){}
}
classPeopleextendsP{
publicvoidsayHi(){
System.out.println("sayHi()");
}
publicvoidsayHello(Stringname){
System.out.println("sayHello(Stringname)"+"name="+name);
}
privatevoidsayGoodBye(Stringname,intage){
System.out.println("sayGoodBye(Stringname,intage)"+"name="+name+"age="+age);
}
}
publicclassMethodDemo{
publicstaticvoidmain(String[]args)throwsException{
Classclazz=People.class;
//獲取類自身及父類所有public方法
Methodms[]=clazz.getMethods();
for(Methodm:ms){
System.out.println(m);
}
System.out.println("---------------------------");
//獲取類自身所有方法(不會獲取父類方法)
ms=clazz.getDeclaredMethods();
for(Methodm:ms){
System.out.println(m);
}
System.out.println("---------------------------");
//只能獲取父類中的public方法,無法獲取到父類的默認許可權和private許可權方法
Methodm=clazz.getMethod("t1",null);//publicvoidcom.reflex.P.t1()
System.out.println(m);
m=clazz.getMethod("sayHello",String.class);
System.out.println(m);
//Exceptioninthread"main"java.lang.NoSuchMethodException:com.reflex.People.sayGoodBye(java.lang.String,int)
//getMethod方法只能獲取public的
//m=clazz.getMethod("sayGoodBye",String.class,int.class);
//System.out.println(m);
m=clazz.getDeclaredMethod("sayGoodBye",String.class,int.class);
System.out.println(m);
//帶Declared的無法獲取父類中的方法
//m=clazz.getDeclaredMethod("t1",null);//Exceptioninthread"main"java.lang.NoSuchMethodException:com.reflex.People.t1()
//System.out.println(m);
}
}
❺ java 每一個方法之前判斷一些參數的情況可以抽取公用嗎
判斷邏輯相同的話最好抽為公用,spring核心,不要重復造輪子,兄弟
❻ java怎麼使用隨機抽取數組里的數據
package reptile;
import java.util.Random;
public class Test
{
public static void main(String[] args){
String[] b = {"公共的", "私有的", "受保護的"};
Random rand = new Random();
int num = rand.nextInt(3);
System.out.println(b[num]);
}
❼ Java如何將重復的方法提成公共介面
方法
如果您可以使用一個級別的間接,那麼我在下面介紹的方法會將重復的代碼減少到最小.
首先,考慮以下供應商界面及其內部類:這里沒什麼神奇的.內部類只是一個帶有私有final欄位的bean,一個用於初始化它們的私有構造函數,publicgetter,一個工廠方法和一個覆蓋toString()方法.該介面僅定義一個返回內部類實例的方法.請注意,內部類是最終的.我們的想法是強制實現不變性,以便不允許其屬性發生變化.
然後,讓我們創建幾個將實現此介面的枚舉.讓我們從MyEnum1開始,它定義了兩個值:接下來是MyEnum2,它只定義了一個值:兩個枚舉都實現了Propertiessupplier介面,因此它們必須為Properties屬性()方法提供實現.為了符合這一點,他們必須封裝他們在構造函數中接收的Properties實例.在這個間接之後,在所有枚舉中重復的唯一代碼只是屬性欄位,接收它作為參數的構造函數及其getter方法.
❽ java中好幾個不同的實體類要調用某個公共的方法,公共方法的參數怎麼寫。
因為,A,B,C沒有繼承公共超類,也沒有實現公共介面,可以考慮使用泛型解決:
class 公共方法
{
public <U> void 方法1(Class<U> cls,U obj)
{
U o=cls.cast(obj);
//調用o的方法
}
}
則這樣使用這個類:
公共方法 cf=new 公共方法();
A a=new A();
cf.方法1(A.class,a);
B b=new B();
cf.方法1(B.class,b);
❾ Java:如何使工程中的所有函數都能有公共的執行部分呢
自己寫個工具類比如:
publicclassTestTime{
staticlongstart=0;
publicstaticvoidstart(){
start=System.currentTimeMillis();
}
publicstaticvoidend(){
longend=System.currentTimeMillis();
System.out.println(end-start);
}
}
public void xxx(){
TestTime.start(); //使用
.........................
TestTime.end(); //使用
}