Tag: 静态方法

什么时候应该在课堂上使用静态方法,有什么好处?

我有静态variables的概念,但在一个类中静态方法的好处是什么。 我已经在一些项目上工作,但我没有做一个静态的方法。 每当我需要调用一个类的方法,我创build该类的一个对象,并调用所需的方法。 Q:一个方法中的静态variables即使在执行方法时也保存它的值,但只能在其包含的方法中访问,但静态方法的最佳定义是什么? 问:调用静态方法而不创build该类的对象是静态方法的唯一好处? 问:静态方法的可访问范围是多less? 谢谢

Swift中的静态属性

我试图将下面的Objective-C代码转换为Swift。 在我的Objective-C代码中,有一个静态variables,它可以通过类方法访问。 @implementation SomeClass static NSMutableArray *_items; + (void)someMethod { [_items removeAll]; } @end 既然你不能从Swift的类函数中访问类似private var items = [AnyObject]()的types,我为它创build了一个存储属性。 class var items: [AnyObject] { return [AnyObject]() } 我试图从类似的function调用它的方法。 class func someFunction() { items.removeAll(keepCapacity: false) } 但是我得到这个错误types'[AnyObject]'的不可变值只有名为'removeAll'的变异成员 。 任何人都可以告诉我这个错误的原因是什么,以及如何纠正? 谢谢。

使用了很多静态方法是一件坏事?

当这个类不需要跟踪内部状态时,我倾向于将类中的所有方法声明为静态。 例如,如果我需要将A转换为B,并且不依赖于某些可能不同的内部状态C,则创build一个静态转换。 如果有一个内部状态C,我希望能够调整,那么我添加一个构造函数来设置C,不要使用静态转换。 我读了各种build议(包括在StackOverflow)不要过度使用静态方法,但我仍然不明白上面的经验法则是什么问题。 这是一个合理的方法吗?

单一方法的类 – 最好的方法?

假设我有一个课程是为了完成一个单一的function。 执行该function后,可以销毁。 有没有任何理由更喜欢这些方法之一? // Initialize arguments in constructor MyClass myObject = new MyClass(arg1, arg2, arg3); myObject.myMethod(); // Pass arguments to method MyClass myObject = new MyClass(); myObject.myMethod(arg1, arg2, arg3); // Pass arguments to static method MyClass.myMethod(arg1, arg2, arg3); 我故意模糊的细节,试图得到不同情况的指导方针。 但是我并没有真正想到像Math.random()这样简单的库函数。 我正在考虑更多的类执行一些特定的,复杂的任务,但只需要一个(公共)的方法来做到这一点。

.NET:在其静态方法中确定“this”类的types

在一个非静态的方法,我可以使用this.GetType() ,它会返回Type 。 我怎样才能获得相同的Type在一个静态的方法? 当然,我不能只写typeof(ThisTypeName)因为ThisTypeName只在运行时才是已知的。 谢谢!

通过静态方法访问SharedPreferences

我有一些信息存储为SharedPreferences。 我需要从外部访问活动的信息(来自域模型类)。 所以我在一个Activity中创build了一个静态方法,我只用它来获取共享首选项。 这给我一些问题,因为显然无法从静态方法调用方法“getSharedPreferences”。 这是eclipse给我的消息: Cannot make a static reference to the non-static method getSharedPreferences(String, int) from the type ContextWrapper 我试图通过使用一个活动的实例来解决这个问题,就像这样: public static SharedPreferences getSharedPreferences () { Activity act = new Activity(); return act.getSharedPreferences("FILE", 0); } 这段代码给出了一个空点exception。 有没有解决办法? 我想通过尝试这样做到Android的代码气味? 提前致谢。

“类方法”和“静态方法”有什么区别?

我已经使用了几种不同的语言,如Java,C#和Objective-C。 在大多数语言中,不需要对象实例的方法称为静态方法。 然而,当谈到Objective-C时,有些人把它们称为静态方法时会有防御性,他们希望你称之为类方法。 为什么他们调用类方法而不是静态方法? 静态方法和类方法有什么区别?

方法重载并select最具体的types

示例代码是: public class OverloadingTest { public static void test(Object obj){ System.out.println("Object called"); } public static void test(String obj){ System.out.println("String called"); } public static void main(String[] args){ test(null); System.out.println("10%2==0 is "+(10%2==0)); test((10%2==0)?null:new Object()); test((10%2==0)?null:null); } 输出是: string调用 10%2 == 0是真的 调用的对象 string调用 第一个调用test(null)的方法用String参数调用,根据The Java Language Specification可以理解。 1)任何人都可以解释我在前面的调用中调用test()依据是什么? 2)当我们再次说, if条件: if(10%2==0){ test(null); } else { test(new Object()); […]

命名空间+函数与类的静态方法

比方说,我有或将要写一组相关的function。 假设他们是math相关的。 在组织上,我应该: 写这些函数,把它们放在我的MyMath命名空间,并通过MyMath::XYZ()引用它们 创build一个名为MyMath的类,并使这些方法是静态的,并引用类似的MyMath::XYZ() 为什么我会select一个作为组织软件的手段?

generics类中的静态方法?

在Java中,我想有一些东西: class Clazz<T> { static void doIt(T object) { // shake that booty } } 但是我明白了 无法对非静态typesT进行静态引用 我不明白基本用法之外的generics,因此不能理解这一点。 这并没有帮助,我无法find关于这个问题在互联网上的很多信息。 有人可以通过类似的方式澄清这种使用是否可能吗? 另外,为什么我的原始尝试失败?