可能重复:
静态类和单例模式之间的区别?
只是想知道单例和静态类的区别究竟是什么?
我对对象的垃圾收集过程感到困惑.
object A = new object();
object B = A;
B.Dispose();
Run Code Online (Sandbox Code Playgroud)
通过仅在变量B上调用Dispose,创建的对象将不会被垃圾收集,因为对象仍然被A引用.
现在,以下代码与上面的代码相同吗?
public static image Test1()
{
Bitmap A = new Bitmap();
return A;
}
Run Code Online (Sandbox Code Playgroud)
现在我从其他方法调用这个静态函数.
public void TestB()
{
Bitmap B = Test1();
B.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
静态函数Test1返回对Bitmap对象的引用.引用保存在另一个变量B中.通过调用B上的Dispose,B和对象之间的连接丢失,但从Test1传递的引用会发生什么.它将保持活动状态,直到函数TestB的范围完成?
有没有办法处理从静态函数传递的引用?
我可以在类的静态构造函数中加水吗?
public class Connect:IDTExtensibility2, IDTCommandTarget
static Connect()
{
//hydrate static properties?
}
[Import]
public static Action<ProjectLogicChecks> Display { get; set; }
[Export(typeof(Action<ProjectLogicChecks>))]
private static void DisplayResults( CheckProcesses _checkResults)
{
MessageBox.Show(_checkResults.ProjectLogicCheck.AssemblyName + " has problems=" +
_checkResults.ProjectLogicCheck.HasProblems);
}
Run Code Online (Sandbox Code Playgroud) 所以我在一个模块中有一个类,它有一些静态方法.其中一些静态方法只是做crc检查和填充,并且它们在类之外并不是真的有用(我只是在java或C++中使它们成为私有静态方法).我想知道我是否应该让它们成为全局类函数(在类之外).
这样做有什么好处吗?这个类正在被导入,from module import class所以我并不担心这些模块也会被引入.但是,我应该让它们成为类方法,以便from module import *更安全吗?
在ruby中你可以这样做:
class A
def self.a
'A.a'
end
end
puts A.a #-> A.a
Run Code Online (Sandbox Code Playgroud)
怎么能在python中完成.我需要一个类的方法,而不需要在类的实例上调用它.当我尝试这样做时,我收到此错误:
unbound method METHOD must be called with CLASS instance as first argument (got nothing instead)
Run Code Online (Sandbox Code Playgroud)
这是我试过的:
class A
def a():
return 'A.a'
print A.a()
Run Code Online (Sandbox Code Playgroud) public class TestStatic {
public static int methodstatic(){
return 3;
}
}
@Test
@PrepareForTest({TestStatic.class})
public class TestStaticTest extends PowerMockTestCase {
public void testMethodstatic() throws Exception {
PowerMockito.mock(TestStatic.class);
Mockito.when(TestStatic.methodstatic()).thenReturn(5);
PowerMockito.verifyStatic();
assertThat("dff",TestStatic.methodstatic()==5);
}
@ObjectFactory
public IObjectFactory getObjectFactory() {
return new org.powermock.modules.testng.PowerMockObjectFactory();
}
}
Run Code Online (Sandbox Code Playgroud)
例外:
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() requires an argument which has to be 'a method call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
Also, this error might show up because:
1. you stub either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
2. …Run Code Online (Sandbox Code Playgroud) 我正在从IntentService进行网络调用,但仍然收到NetworkOnMainThreadException.我的理解是IntentService总是在工作线程上运行,所以我很惊讶看到这一点.关键部分可能是我的IntentService正在调用执行网络调用的静态助手类.静态助手类在我的主Application类中实例化.
我以为这仍然会在IntentService的工作线程上执行.我错过了什么?
老实说,我更喜欢通过快速代码修复进行冗长的信息讨论.但如果需要代码,则应提供代码:
//MyApplication.java
public class MyApplication extends Application{
private static NetworkUtils utils;
@Override
public void onCreate() {
super.onCreate();
utils = new NetworkUtils(this);
...
}
...
}
//NetworkUtils.java
public class NetworkUtils {
private static Context context;
private static final Gson gson = new Gson();
public NetworkUtils(Context context) {
this.context = context;
}
public static final DataResponse login(String email, String password) {
//*** NetworkOnMainThreadException OCCURS HERE ***
DataResponse response = HttpConnection.put(url, json);
...
return response;
}
...
}
//LoginService.java
public class …Run Code Online (Sandbox Code Playgroud) 静态内部类M和M[类C]的静态成员如何共享同一个名称?
以下代码生成"White"作为输出:
public class Amazed{
public static void main(String[] args) {
System.out.println(B.M.W);
}
}
class B {
public static class M {
static String W = "Black";
}
static C M = new C();
}
class C {
String W = "White";
}
Run Code Online (Sandbox Code Playgroud)
如何访问成员对象而不是静态类成员:W ["Black"]
如果我想访问静态类M中的成员怎么做?
我正在尝试从具有相同名称空间的另一个类调用名称空间类的静态方法.但是另一个类的名称包含在变量中:
<?php
namespace MyApp\Api;
use \Eloquent;
class Product extends Eloquent {
public static function find($id)
{
//....
}
public static function details($id)
{
$product = self::find($id);
if($product)
{
$type = $product->type; // 'Book'
$product = $type::find($product->id);
return $product;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是Book班级:
<?php
namespace MyApp\Api;
use \Eloquent;
class Book extends Eloquent {
public static function find($id)
{
//....
}
}
Run Code Online (Sandbox Code Playgroud)
我的类型变量在此处包含有效的类名Book.此类位于同一文件夹中,并使用相同的命名空间.此代码返回错误Class 'Book' not found.我尝试了几种变体(我发现的SO问题)使用反斜杠或call_user_func函数,但没有任何效果.谁知道什么是错的?
我有一堂课
class MyClass {
def apply(myRDD: RDD[String]) {
val rdd2 = myRDD.map(myString => {
// do String manipulation
}
}
Run Code Online (Sandbox Code Playgroud)
}
object MyClass {
}
Run Code Online (Sandbox Code Playgroud)
由于我有一段代码执行一个任务(表示的区域"do String manipulation"),因此我认为应该将其分解为自己的方法。由于该方法不会更改类的状态,因此我认为应该将其设置为static方法。
我怎么做?
我认为您可以在同伴对象内弹出一个方法,它将作为静态类提供,如下所示:
object MyClass {
def doStringManipulation(myString: String) = {
// do String manipulation
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试时val rdd2 = myRDD.map(myString => { doStringManipulation(myString)}),scala无法识别该方法,因此它迫使我执行此操作MyClass.doStringManipulation(myString)以进行调用。
我究竟做错了什么?