我有很多xml文件,我想使用XStream来管理它们.是否可以使用XStream生成与我的xml文件对应的java类?
我最近看到了谷歌图书馆Gson的源代码,看到了一些非常奇怪的东西(IMO).在com.google.gson.internal包中,有两个类以"$"开头.
例如
public final class $Gson$Types { ... }
Run Code Online (Sandbox Code Playgroud)
美元符号是否对开发有影响,或者只是对外部开发人员说"请不要使用因为它是内部类"?
具有公共静态的所有方法的实用程序类的正确方法是什么.
我应该使用最终类还是抽象类?
请给出建议.
例如:
public final class A{
public static void method(){
/* ... */
}
}
Run Code Online (Sandbox Code Playgroud)
要么
public abstract class A{
public static void method(){
/* ... */
}
}
Run Code Online (Sandbox Code Playgroud) 我真的不明白class
关键字在某些情况下是如何工作的.
例如,该get(ClientResponse.class)
方法采用 ClientResponse.class
.当它获得它时它如何使用它,并且仅仅传递它的实例有什么优势?
所以我有一个类,我将其用作本地命名空间.我在类中有一些静态函数,但它们无法访问类范围变量.为什么是这样?
class Foo:
foo_string = "I am a foo"
@staticmethod
def foo():
print foo_string
Run Code Online (Sandbox Code Playgroud)
>>> Foo.foo()
[Stack Trace]
NameError: global name 'foo_string' is not defined
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
代码是这样的:
class Test:
a = 1
def __init__(self):
self.b=2
Run Code Online (Sandbox Code Playgroud)
当我创建一个实例时Test
,我可以b
像这样访问它的实例变量(使用字符串"b"):
test = Test()
a_string = "b"
print test.__dict__[a_string]
Run Code Online (Sandbox Code Playgroud)
但它不起作用,a
因为self.__dict__
不包含名为的键a
.那么a
如果我只有一个字符串,我怎么才能访问a
?
谢谢!
我想知道是否有一种简单的方法来编写c ++类函数的别名.例如,如果我有一些list
容器对象,那么逻辑函数就是
int list::length() { return len; }
Run Code Online (Sandbox Code Playgroud)
但程序员可能使用的另一个逻辑别名可能是
int list::size() { return len; }
Run Code Online (Sandbox Code Playgroud)
因此,有没有任何方法可以创建list::size()
别名list::length()
,使其在编译时不重复,而是引用相同的函数?
我已经读过你可以这样做了#define
,但是我不想在某个地方完全超出范围的其他代码名称(即'size'变量)引起任何混淆.
我还读过函数指针可以修复它,但这不是一个别名(因为它必须应用去引用),也不能给函数指针一个声明,给用户一个令人困惑的帮助线(我想),加上混乱,如果我需要将我的代码嵌套在另一个对象中(我必须调整范围).
我的一个猜测是,大多数优化编译器将以下内容作为直接函数别名:
inline int list::length() { return len; }
inline int list::size() { return length(); }
Run Code Online (Sandbox Code Playgroud)
或者,c ++有任何严格的"别名"语法吗?(我找不到任何 - 不确定)
那么,这样做最有效的方法是什么?
编辑:我接受了答案只是为了结束这个问题,因为这只是我的一个好奇心.任何有良好信息的人,请添加评论或回答,我甚至可能会改变我的答案.
我想验证发送给方法的参数,它必须是接口类型.怎么问?
void (Class<I> interfaceType){
if (thisisnotaninterface){
throw...
}
}
Run Code Online (Sandbox Code Playgroud) 假设我们有以下struct
使用泛型的定义:
public struct Foo<T>
{
public T First;
public T Second;
public Foo(T first)
{
this.First = first;
}
}
Run Code Online (Sandbox Code Playgroud)
编译说
在将控制权返回给调用者之前,必须完全分配'Foo.Second'
但是,如果Foo
是一个类,那么它会成功编译.
public class Foo<T>
{
public T First;
public T Second;
public Foo(T first)
{
this.First = first;
}
}
Run Code Online (Sandbox Code Playgroud)
为什么?为什么编译器对它们的区别对待?此外,如果在第一个中没有定义构造函数,Foo
那么它将编译.为什么会这样?
到目前为止,我对在类模块中使用Let属性的理解是你在类模块中设置它,如下所示:
Dim pName as String
Public Property Let Name(Value As String)
pName = Value
End Property
Run Code Online (Sandbox Code Playgroud)
然后,在您创建了此类的对象之后,您可以像这样设置此属性:
MyObject.Name = "Larry"
Run Code Online (Sandbox Code Playgroud)
问题:是否有可能以某种方式在类属性中输入多个参数?例如:
Dim pFirstName as String, pLastName as String
Public Property Let Name(FirstName As String, LastName As String)
pFirstName = FirstName
pLastName = LastName
End Property
Run Code Online (Sandbox Code Playgroud)
那你怎么去在课外设置这个属性呢?
MyObject.Name = ??
Run Code Online (Sandbox Code Playgroud)
或者这是不可能做到的?