Java中的内部类和静态嵌套类之间的主要区别是什么?设计/实施是否在选择其中一个方面发挥作用?
static classjava中有类似的东西吗?
这类课的意义是什么.静态类的所有方法都需要static吗?
是否需要反过来说,如果一个类包含所有静态方法,那么该类是否也应该是静态的?
什么是静态类有用?
我正在开发一个带有服务的Android 2.3.3应用程序.我在服务中有这个与Main活动进行通信:
public class UDPListenerService extends Service
{
private static final String TAG = "UDPListenerService";
//private ThreadGroup myThreads = new ThreadGroup("UDPListenerServiceWorker");
private UDPListenerThread myThread;
/**
* Handler to communicate from WorkerThread to service.
*/
private Handler mServiceHandler;
// Used to receive messages from the Activity
final Messenger inMessenger = new Messenger(new IncomingHandler());
// Use to send message to the Activity
private Messenger outMessenger;
class IncomingHandler extends Handler
{
@Override
public void handleMessage(Message msg)
{
}
}
/**
* Target we …Run Code Online (Sandbox Code Playgroud) android memory-leaks static-classes android-lint android-handler
一位同事刚刚在C#中创建了以下构造(示例代码已经简化).他的目标是缩短其余代码中所有预定义字符串的表示法.
public struct PredefinedStrings
{
public const string VeryLongName = "Very Long Name";
public const string AnotherVeryLongName = "Another Very Long Name";
public const string TheLastVeryLongName = "The Last Very Long Name";
}
public static void MethodThatUsesTheNames()
{
Console.WriteLine(PredefinedStrings.VeryLongName);
Console.WriteLine(PredefinedStrings.AnotherVeryLongName);
Console.WriteLine(PredefinedStrings.TheLastVeryLongName);
}
Run Code Online (Sandbox Code Playgroud)
虽然它似乎对他来说很好,但我不禁想知道他是否应该使用静态类而不是结构,或者是否有更优雅的方法来实现这一点.
这样做的首选方法是什么?还请解释原因.
在C#中有什么区别:
public static class ClassName {}
Run Code Online (Sandbox Code Playgroud)
和:
public class ClassName {}
Run Code Online (Sandbox Code Playgroud) 我看到很多java代码,其中android更喜欢让开发人员使用静态内部类.特别是对于自定义ListAdapters中的ViewHolder Pattern等模式.
我不确定静态类和非静态类之间的区别.我已经读过它但是在关注性能或内存占用时似乎没有意义.
我在SO周围挖了一个答案,到目前为止我能找到的最好的是这里,但是这是针对静态构造函数的实例; 我只是静态使用这个类.
我的代码:
public static class MailHelper {
private static string mailHost;
static MailHelper() {
var mailSettings = ConfigurationManager.GetSection("MailSettings") as NameValueCollection;
if (null == mailSettings) {
throw new ConfigurationErrorsException("Missing Mail Settings in the configuration file");
}
mailHost = ConfigurationManager.AppSettings["mailHost"];
if (null == mailHost) {
throw new ConfigurationErrorsException("Missing mailHost setting in the configuration file");
}
}
public static void SendMail(MailMessage Message) {
...
}
}
try {
MailHelper.SendMail(Message);
}
catch (ConfigurationErrorsException exc) {
...
}
// ???
MailHelper.SendMail(Message);
. …Run Code Online (Sandbox Code Playgroud) 显然,静态类上不能有实例成员,因为该类永远不会被实例化.为什么我们需要将成员声明为静态?
我有一个带有静态构造函数的静态类.我需要以某种方式将参数传递给这个静态类,但我不确定最好的方法是什么.你会推荐什么?
public static class MyClass {
static MyClass() {
DoStuff("HardCodedParameter")
}
}
Run Code Online (Sandbox Code Playgroud) 我一直在阅读当你尝试在项目中实现单元测试时,静态方法,静态类和单例是邪恶的.在遵循TDD范例时,我是否应该忘记它们曾经存在过并且从未再次使用它们,或者有时可以使用它们吗?
static-classes ×10
c# ×5
java ×3
android ×2
.net ×1
android-lint ×1
class ×1
constructor ×1
exception ×1
implicit ×1
memory-leaks ×1
performance ×1
singleton ×1
static ×1
string ×1
struct ×1
tdd ×1