GVKun编程网logo

我们可以在Java中使用null对象调用静态方法吗?如果是这样,怎么办?

6

在本文中,我们将详细介绍我们可以在Java中使用null对象调用静态方法吗?如果是这样,怎么办?的各个方面,同时,我们也将为您带来关于c#–使用LINQ,是否可以从Select语句输出动态对象?如果是

在本文中,我们将详细介绍我们可以在Java中使用null对象调用静态方法吗?如果是这样,怎么办?的各个方面,同时,我们也将为您带来关于c# – 使用LINQ,是否可以从Select语句输出动态对象?如果是这样,怎么办?、c# – 我可以简化这段代码吗?如果是这样的话、cookie – 可以从不同的子域读取cookie吗?如果是这样,怎么办?、C#:如果从多个线程调用静态方法该怎么办?的有用知识。

本文目录一览:

我们可以在Java中使用null对象调用静态方法吗?如果是这样,怎么办?

我们可以在Java中使用null对象调用静态方法吗?如果是这样,怎么办?

由于可以直接从类(即ClassName.methodName)中调用静态方法,因此为什么需要使用该类的对象来调用静态方法?

如果有人知道的话,请举例说明。

public static void methodA(){}

答案1

小编典典

以下代码包含一个示例,其中通过null引用调用了静态方法。

public class Test {    public static void main(String... args) {        Test test = null;        test.greeting(); // call with null reference    }    public static void greeting() {        System.out.println("Hello World");    }}

由于Test::greeting是静态方法,因此表达式test.greeting()与相同Test.greeting()。因此,NullPointerException在运行时不会抛出异常。

c# – 使用LINQ,是否可以从Select语句输出动态对象?如果是这样,怎么办?

c# – 使用LINQ,是否可以从Select语句输出动态对象?如果是这样,怎么办?

目前在LINQ中,以下编译和工作很好:
var listofFoo = myData.Select(x => new FooModel{
     someProperty = x.prop1,someOtherProperty = x.prop2
});

public class FooModel{
     public string someProperty  { get; set; };
     public string someOtherProperty  { get; set; };
}

然而,过去几个版本的.NET / C#已经扩展了动态对象的作用,如ExpandoObject,我想知道是否有办法基本做到这一点:

var listofFoo = myData.Select(x => new ExpandoObject{
     someProperty = x.prop1,someOtherProperty = x.prop2
});

显然,我已经尝试了上面的代码没有成功,但似乎我错过了一些东西.

解决方法

您应该能够创建一个新的匿名对象,而不声明任何类型:
var listofFoo = myData.Select(x => new {
    someProperty = x.prop1,someOtherProperty = x.prop2
});

c# – 我可以简化这段代码吗?如果是这样的话

c# – 我可以简化这段代码吗?如果是这样的话

我正在尝试向我的第一个MVVM程序添加多个命令.
但我在这里添加它们的方式对我来说是错误的.
我想尽量避免重复,我可以制作一种我可以轻松修改的父命令吗?

internal class AddTimerBarCommand : ICommand
{
    public AddTimerBarCommand(Mainviewmodel viewmodel)
    {
        _Mainviewmodel = viewmodel;
    }

    private Mainviewmodel _Mainviewmodel;
    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public void Execute(object parameter)
    {
        _Mainviewmodel.AddTimerBar();
    }
}

internal class RmvTimerBarCommand : ICommand
{
    public RmvTimerBarCommand(Mainviewmodel viewmodel)
    {
        _Mainviewmodel = viewmodel;
    }

    private Mainviewmodel _Mainviewmodel;
    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public void Execute(object parameter)
    {
        _Mainviewmodel.RmvTimerBar();
    }

解决方法

您是否在寻找基类来减少代码重复?

如果是这样,这可能适合您:

internal abstract class TimerBarCommandBase : ICommand
{
    public TimerBarCommandBase(Mainviewmodel viewmodel)
    {
        _Mainviewmodel = viewmodel;
    }

    protected Mainviewmodel _Mainviewmodel;
    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter) { return true; }

    public abstract void Execute(object parameter);
}

internal class AddTimerBarCommand : TimerBarCommandBase
{
    public AddTimerBarCommand(Mainviewmodel viewmodel) : base(viewmodel) { }

    public override void Execute(object parameter)
    {
        _Mainviewmodel.AddTimerBar();
    }
}

internal class RmvTimerBarCommand : TimerBarCommandBase
{
    public RmvTimerBarCommand(Mainviewmodel viewmodel) : base(viewmodel) { }

    public override void Execute(object parameter)
    {
        _Mainviewmodel.RmvTimerBar();
    }
}

cookie – 可以从不同的子域读取cookie吗?如果是这样,怎么办?

我正在为一个客户端的网站进行开发.该网站将托管在客户的主要网站的子域上.客户的主要网站是

www.xyz.com

我正在工作的网站将被托管在

funds.xyz.com

任何访问www.xyz.com的人都会将Cookie写入其机器,其中包含指定用户区域的数据.我需要我的网站上的数据.我有可能访问这个cookie吗?

解决方法

是的,只要cookie设置为域“.xyz.com”(注意领先的“.”).这使得cookie可用于xyz.com的所有子域

另一方面,如果域名为“www.xyz.com”,那么cookie只能在www子域中可见.

C#:如果从多个线程调用静态方法该怎么办?

C#:如果从多个线程调用静态方法该怎么办?

在我的应用程序中,我有一个静态方法,该方法同时从多个线程中调用。我的数据有混淆的危险吗?

在我的第一次尝试中,该方法不是静态的,并且我正在创建该类的多个实例。在这种情况下,我的数据会以某种方式混淆。我不确定这是怎么发生的,因为它只是偶尔发生。我还在调试。但是现在该方法是静态的,到目前为止我还没有问题。也许只是运气。我不确定

答案1

小编典典

在方法内部声明的变量(“ 捕获的 ”变量可能例外)是隔离的,因此您不会遇到任何固有的问题。但是,如果您的静态方法访问任何共享状态,则所有选择均关闭。

共享状态的示例为:

  • 静态场
  • 从公共缓存访问的对象(非序列化)
  • 通过输入参数(以及那些对象的状态)获得的数据,如果多个线程可能正在触摸同一个对象

如果您拥有共享状态,则必须:

  • 请注意不要在共享状态后立即对其进行更改(更好:使用不可变的对象表示状态,并将该状态的快照记录到局部变量中-即,而不是whatever.SomeData重复引用,而是whatever.SomeData 一次 读取一个局部变量,然后只需使用变量-请注意,这仅有助于不可变状态!)
  • 同步访问数据(所有线程必须同步)-互斥或(更精细的)读取器/写入器

关于我们可以在Java中使用null对象调用静态方法吗?如果是这样,怎么办?的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于c# – 使用LINQ,是否可以从Select语句输出动态对象?如果是这样,怎么办?、c# – 我可以简化这段代码吗?如果是这样的话、cookie – 可以从不同的子域读取cookie吗?如果是这样,怎么办?、C#:如果从多个线程调用静态方法该怎么办?等相关内容,可以在本站寻找。

本文标签: