我的老师提出的问题是:记下可能发生舍入错误的分配.这是Java.
float f;
long l;
double d;
f = l;
d = l;
Run Code Online (Sandbox Code Playgroud)
这是答案,但为什么呢?float的值和最大值较高,float是浮点数.相比之下,长期只是全数,那为什么会出现舍入错误呢?
我想要一个构造函数调用只允许有限范围的"扩展".假设我有这两个类:
public class Foo
{
public Foo(Extension ext)
{
// do something
}
}
public class Extension
{
public const string TXT = ".txt";
public const string XML = ".xml";
}
Run Code Online (Sandbox Code Playgroud)
因此,当另一个开发人员想要使用时,Foo他只能使用Extension类中的值来执行此操作,如下所示:
Foo foo = new Foo(Extension.TXT);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这样做时,我得到一个IDE错误说:"cannot convert from 'string' to '<ProjectName>.Extension'.
作为一种"解决方法",我可以将我的Extension课程改为:
public class Extension
{
public enum File
{
TXT,
XML
}
}
Run Code Online (Sandbox Code Playgroud)
并像这样使用它:
Foo foo = new Foo(Extension.File.TXT);
Run Code Online (Sandbox Code Playgroud)
哪个工作得很好但我不喜欢的是调用是一个更长的级别(类 - >枚举 - >元素而不是类 - >元素).
那么,问题是我的解决方法实际上是唯一有效,正确或最佳实践的解决方案吗?