我有以下课程:
public class Test {
public static int a = 0;
public int b = 1;
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用反射来获取静态字段列表?我知道我可以获得所有字段的数组Test.class.getDeclaredFields().但似乎没有办法确定Field实例是否代表静态字段.
我意识到它似乎是C#中字段和属性之间有什么区别的重复?但我的问题略有不同(从我的观点来看):
一旦我知道了
是否有任何区别(风格/未来发展除外),如设置属性时的某种控制类型?
是否有任何额外的区别:
public string MyString { get; set; }
Run Code Online (Sandbox Code Playgroud)
和
public string myString;
Run Code Online (Sandbox Code Playgroud)
(我知道,第一个版本需要C#3.0或更高版本,并且编译器会创建私有字段.)
我有一个抽象基类,我想声明一个字段或属性,在每个继承自此父类的类中具有不同的值.
我想在基类中定义它,所以我可以在基类方法中引用它 - 例如重写ToString来说"这个对象是属性/字段类型".我有三种方法可以看到这样做,但我想知道 - 这样做的最佳或可接受的方式是什么?新手问题,抱歉.
选项1:
使用抽象属性并在继承的类上覆盖它.这得益于强制执行(你必须覆盖它)并且它是干净的.但是,返回硬代码值而不是封装字段感觉有点不对,而且它只是几行代码而不仅仅是.我还必须为"集合"声明一个主体,但这不太重要(并且可能有一种方法可以避免我不知道的情况).
abstract class Father
{
abstract public int MyInt { get; set;}
}
class Son : Father
{
public override int MyInt
{
get { return 1; }
set { }
}
}
Run Code Online (Sandbox Code Playgroud)
选项2
我可以声明一个公共字段(或受保护的字段),并在继承的类中显式覆盖它.下面的例子会给我一个使用"new"的警告,我可能会这样做,但它感觉不对,它打破了多态性,这是重点.看起来不是一个好主意......
abstract class Mother
{
public int MyInt = 0;
}
class Daughter : Mother
{
public int MyInt = 1;
}
Run Code Online (Sandbox Code Playgroud)
选项3
我可以使用受保护的字段并在构造函数中设置值.这看起来很整洁,但依赖于我确保构造函数始终设置这个并且使用多个重载构造函数总是有可能某些代码路径不会设置该值.
abstract class Aunt
{
protected int MyInt;
}
class Niece : Aunt
{ …Run Code Online (Sandbox Code Playgroud) 我有一个包含两个字段的表(国家和ISO代码):
Table1
field1 - e.g. 'Afghanistan' (without quotes)
field2 - e.g. 'AF'(without quotes)
Run Code Online (Sandbox Code Playgroud)
在某些行中,第二个字段在开头和/或结尾处有空格,这会影响查询.
Table1
field1 - e.g. 'Afghanistan' (without quotes)
field2 - e.g. ' AF' (without quotes but with that space in front)
Run Code Online (Sandbox Code Playgroud)
是否有一种方法(在SQL中)通过表并查找/替换field2中的空格?
我想知道,因为可以使用反射完成很多事情,我可以在构造函数完成执行后更改私有只读字段吗?
(注意:只是好奇心)
public class Foo
{
private readonly int bar;
public Foo(int num)
{
bar = num;
}
public int GetBar()
{
return bar;
}
}
Foo foo = new Foo(123);
Console.WriteLine(foo.GetBar()); // display 123
// reflection code here...
Console.WriteLine(foo.GetBar()); // display 456
Run Code Online (Sandbox Code Playgroud) 有没有办法使用javascript和JQuery添加一些使用POST从HTTP表单发送的其他字段?
我的意思是:
<form action="somewhere" method="POST" id="form">
<input type="submit" name="submit" value="Send" />
</form>
<script type="text/javascript">
$("#form").submit( function(eventObj) {
// I want to add a field "field" with value "value" here
// to the POST data
return true;
});
</script>
Run Code Online (Sandbox Code Playgroud) 我想在一开始就有一个包含"$"符号的文本输入字段,无论字段发生什么编辑,标志都是持久的.
如果只接受输入数字,我会很好,但这只是一个奇特的补充.
为什么Java类不能像抽象方法一样具有抽象字段?
例如:我有两个扩展相同抽象基类的类.这两个类每个都有一个相同的方法,除了一个String常量,它常常是一个错误消息.如果字段可以是抽象的,我可以使这个常量抽象,并将方法拉入基类.相反,我必须创建一个抽象方法,getErrMsg()在这种情况下调用,返回String,在两个派生类中重写此方法,然后我可以拉出方法(现在调用抽象方法).
为什么我不能开始抽象领域?Java可以设计为允许这样吗?
想象一下,您有一个表单可以切换多个字段的可见性.如果未显示该字段,则不希望其值在请求中.
你是如何处理这种情况的?
我一直想知道在Java中处理多个构造函数的最佳(即最干净/最安全/最有效)方法是什么?特别是在一个或多个构造函数中,并非所有字段都指定:
public class Book
{
private String title;
private String isbn;
public Book()
{
//nothing specified!
}
public Book(String title)
{
//only title!
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果未指定字段,我该怎么办?到目前为止,我一直在使用类中的默认值,以便字段永远不为空,但这是一种"好"的做事方式吗?
field ×10
c# ×3
html ×3
java ×3
properties ×2
reflection ×2
abstract ×1
c#-3.0 ×1
constructor ×1
currency ×1
forms ×1
http ×1
jquery ×1
methods ×1
mysql ×1
persistent ×1
post ×1
readonly ×1
static ×1
text ×1