Tag: static methods

如何从android中的静态方法调用非静态方法

我在从静态方法调用非静态方法时遇到了一个大问题。 这是我的代码 Class SMS { public static void First_function() { SMS sms = new SMS(); sms.Second_function(); } public void Second_function() { Toast.makeText(getApplicationContext(),”Hello”,1).show(); // This i anable to display and cause crash CallingCustomBaseAdapters(); //this was the adapter class and i anable to call this also } 我能够调用Second_function但无法获取Toast和CallCustomBaseAdapter()方法,发生崩溃。 我该怎么做才能解决这个问题?

Guice – 使用静态辅助方法将依赖项注入到类中

我还是Guice的新手,之前没有使用任何DI框架。 在阅读官方维基和许多其他文件后,我仍然无法完全绕过它。 在我的特定情况下,我想编写一个使用其他(待注入)类的EL taglib函数。 因为所有taglib函数都必须声明为static,所以我不能只通过构造函数或setter @Inject我的依赖项。 我想过使用http://code.google.com/p/google-guice/wiki/Injections#Static_Injections中描述的requestStaticInjection()方法但是我无法让它工作并且找不到任何好处教程。 在此先感谢您的帮助, 阿尔曼

Java Pattern类没有公共构造函数,为什么?

我一直在审查Java Regex Library,感到惊讶的是Pattern类没有我多年来认为理所当然的公共构造函数。 我怀疑静态compile方法被用于支持构造函数的一个原因可能是构造函数总是返回一个新对象,而静态方法可能返回一个先前创建的(和缓存的)对象,前提是模式字符串是相同的。 但是,如下所示,情况并非如此。 public class PatternCompiler { public static void main(String[] args) { Pattern first = Pattern.compile(“.”); Pattern second = Pattern.compile(“.”); if (first == second) { System.out.println(“The same object has been reused!”); } else { System.out.println(“Why not just use constructor?”); } } } 使用静态方法而不是构造函数的任何其他强有力的理由? 编辑 :我在这里找到了一个相关的问题 。 那里的答案都没有说服我。 通过阅读所有答案,我感觉静态方法相对于公共构造函数在创建对象方面具有相当多的优势,而不是相反。 真的吗? 如果是这样,我将为我的每个类创建这样的静态方法,并安全地假设它更具可读性和灵活性。

Java数组在静态方法线程中是否安全?

public static int rank(int key, int[] a) { int lo = 0; int hi = a.length – 1; while (lo <= hi) { // Key is in a[lo..hi] or not present. int mid = lo + (hi – lo) / 2; if (key a[mid]) lo = mid + 1; else return mid; } return -1; […]

在静态方法中使用注入bean的正确方法是什么?

这个问题看起来有点奇怪。 假设我有一个服务,我想在具有一些静态方法的Utility类中使用。 该服务是一个Spring bean,所以我自然会使用一个setter和(@Autowired)将它注入我的实用程序类。 正如Spring的文档中提到的,所有bean在bean上下文中都是静态的。 因此,当您想要在类中注入bean时,您不必使用“static”修饰符。 见下文: public class JustAClass{ private Service service; public void aMethod(){ service.doSomething(….); } @Autowired public void setService(Service service){ this.service = service; } } 现在回到我先提到的(在静态方法中使用Service): public class JustAClass{ private static Service service; public static void aMethod(){ service.doSomething(….); } @Autowired public void setService(Service service){ this.service = service; } } public class JustAClass{ […]

静态块与静态方法 – 初始化静态字段

出于好奇,我测量了静态块和静态方法初始化器之间的性能。 首先,我在两个独立的java类中实现了上述方法,如下所示: 第一: class Dummy { static java.util.List lista = new java.util.ArrayList(); static { for(int i=0; i < 1000000; ++i) { lista.add(new Integer(i)); } } } public class First { public static void main(String[] args) { long st = System.currentTimeMillis(); Dummy d = new Dummy(); long end = System.currentTimeMillis() – st; System.out.println(end); } } 第二: […]

public static void main()访问非静态变量

它说非静态变量不能用在静态方法中。但是public static void main。如何?

在Java中,如何在新的侦听器块中访问静态方法参数?

我有一个接受几个参数的静态方法。 在方法内部,我正在创建一个新对象并为其附加一个新的侦听器。 问题是监听器块需要访问外部静态方法变量,但我不知道如何引用它们。 我知道如何使用非静态方法实现这一点,而不是使用静态方法。 这是代码: v.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_UP: ((Activity)*context*).startActivityForResult(*intent*, 0); break; } return true; } }); 由星号包围的上下文和意图变量是传递给静态方法的对象。 由于OnTouchListener是一个内部块,因此它不知道这些对象。 我怎样才能参考它们?

Java接口静态方法解决方法?

我们有一个给定的REST接口: POST /calculation abc 该计算可以由不同的逻辑“计算器”实现,具体取决于服务器配置。 我们现在正在设计每个计算器必须实现的Java接口。 该接口将为每个REST服务提供一种方法。 鉴于所有REST(和HTTP)调用都是无状态的,每个方法都应该是静态的。 但是,您无法在Java接口中定义静态方法。 这种情况有一个很好的解决方法吗? 我们可以将方法定义为非静态,然后首先创建计算器类的实例。 通过在接口中使用static关键字来指示方法是无状态的,这似乎更清晰。

静态方法内存分配

我们有两个分类堆和堆栈。 创建对象时,对象的内存存储在堆中。 如果类具有静态方法,可以使用类名调用该怎么办。 如果没有创建对象,那么它将如何分配内存,如果它在哪里分配内存?