❶ 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(); //使用
}