任何人都可以向我解释为什么java允许您从实例访问静态方法和成员?一个不好的例子,如果我有一个名为RedShape的对象并且它有一个名为getColor()的静态方法返回"red",为什么java允许你从RedShape实例调用静态方法?对我而言,这似乎违反了OO语言设计的一些核心概念.至少,它应该带有编译器警告.
提前致谢.
编辑:
特别是,我问你什么时候有类似的东西
RedShape test = new RedShape();
test.getColor();
Run Code Online (Sandbox Code Playgroud)
其中getColor是RedShape类的静态方法.这没有任何意义,它是允许的,并没有通过javac在命令行上给出编译器警告.我看到它"强烈气馁",但很奇怪是否有一个技术或合理的理由背后为什么它被允许在"因为C++允许它"之外.
我正在寻找一种方法来获取PHP的给定对象/资源的实例ID,就像var_dump()一样:
var_dump(curl_init()); // resource #1 of type curl
var_dump(curl_init()); // resource #2 of type curl
Run Code Online (Sandbox Code Playgroud)
如何在不调用var_dump()的情况下获取实例计数?可能吗?
我为ObjC类创建了自己的Delegate.该类本身处理核心数据操作.委托方法用于通知其他类有关数据存储区发生的更改.处理数据存储区的类称为数据存储区,它的委托称为DatastoreDelegate.我的UIViewController(ContactsViewController)实现了委托.
我的DatastoreDelegate声明如下:
@class Datastore;
@protocol DatastoreDelegate <NSObject>;
@optional
- (void)didAddMessage:(Message *)message;
- (void)didUpdateContact:(Contact *)contact;
- (void)didAddContact:(Contact *)contact;
- (void)didUpdateContact:(Contact *)contact;
- (void)didDeleteContacts;
@end
Run Code Online (Sandbox Code Playgroud)
奇怪的是,除了[didAddMessage:]方法之外,我的代码都可以正常使用这些方法.每当我尝试从Datastore类中调用此委托时,我都会从ContactsViewController中收到错误.该错误告诉我在ContactsViewController实例中缺少[didAddMessage:]选择器(发送到实例的无法识别的选择器).如果它是可选的,选择器怎么会丢失?
我应该注意我的Datastore类是Singleton.我不确定这是否与我遇到的这个问题有某种关系.
我有一个C#方法,它从字符串创建一个类的新实例,但是,我在运行代码时遇到错误.
obj = (ClassX)Activator.CreateInstance(Type.GetType("classPrefix_" + className));
Run Code Online (Sandbox Code Playgroud)
ArgumentNullException未处理
值不能为空
参数名称:类型
任何有关此错误的帮助将不胜感激.
我正在创建一个基于jQuery小部件的富文本编辑器,它可以在页面上有多个实例.第一个实例应生成如下工具栏:
<input type="checkbox" id="bold-1"><label for="bold-1">..
<input type="checkbox" id="italic-1"><label for="italic-1">..
...
Run Code Online (Sandbox Code Playgroud)
第二个实例应该生成:
<input type="checkbox" id="bold-2"><label for ="bold-2">..
<input type="checkbox" id="italic-2"><label for ="italic-2">..
Run Code Online (Sandbox Code Playgroud)
标签'for'属性需要唯一引用其对应的输入'id'属性.因此,我需要为每个实例添加唯一的ID.
这样的东西可以工作,但我不想在全局命名空间中存储一个计数器:
var textEditorCount;
$.widget("myEditor.textEditor", {
_create: function () {
textEditorCount = textEditorCount ? textEditorCount + 1 : 1;
this.instanceID = textEditorCount;
},
...
};
Run Code Online (Sandbox Code Playgroud)
也许问题归结为:(如何)我可以在窗口小部件的命名空间中存储变量?
我还是Android服务类的新手.我知道你需要使用startService(intent)从应用程序启动服务,但是我的问题是我的服务里面有方法.我需要以intent开始服务,然后在Activity中创建该类的对象,以便我可以调用该服务的方法.问题是当我这样做时,当我在我的活动中创建类的对象时,当我使用intent和另一个服务实例启动它时,我创建了一个服务实例.这意味着当我创建服务的对象时,从startService(intent)传递给服务的任何数据都不存在.有什么方法可以解决这个问题,还是我完全滥用服务类?我可以提供一些代码,但基本上这个:
//Create Object of ControlPanel service class.
ControlPanel cPanel = new ControlPanel();
//Create intent for starting ControlPanel service class
Intent controlPanel = new Intent(this, cPanel.getClass());
//Start Service
startService(controlPanel);
Run Code Online (Sandbox Code Playgroud) 如何手动删除类的实例?
例:
#include <iostream>
#include <cstring>
class Cheese {
private:
string brand;
float cost;
public:
Cheese(); // Default constructor
Cheese(string brand, float cost); // Parametrized constructor
Cheese(const Cheese & rhs); // Copy construtor
~Cheese(); // Destructor
// etc... other useful stuff follows
}
int main() {
Cheese cheddar("Cabot Clothbound", 8.99);
Cheese swiss("Jarlsberg", 4.99);
whack swiss;
// fairly certain that "whack" is not a keyword,
// but I am trying to make a point. Trash this instance!
Cheese swiss("Gruyère",5.99);
// re-instantiate …Run Code Online (Sandbox Code Playgroud) 我这样定义了一些类:
class CustomParameter():
def __init__(self, strFriendlyAttribName, strSystemAttribName):
self.FriendlyAttribName = strFriendlyAttribName
self.SystemAttribName = strSystemAttribName
class PartMaster():
AttribNameList = ["Part Number", "Name", "Standard Part", "Part Type", "ControlledBy", "PIN", "Design Responsibility"]
def __init__(self):
self._UUID = None
self.PartNumber = CustomParameter("Part Number", "V_ID"),
self.Name = CustomParameter("Name", "V_name"),
self.StandardPart = CustomParameter("Standard Part", "V508_isStandardPart"),
self.PartType = CustomParameter("Part Type", "V511_PartType"),
self.ControlledBy = CustomParameter("ControlledBy", "V511_ControlledBy"),
self.PIN = CustomParameter("PIN", "BOECACPinItemNumber"),
self.DesignResponsibility = CustomParameter("Design Responsibility", "BOECACDesignRpnse")
class Part():
def __init__(self, PartNumber):
self.PartNumber = PartNumber
#This instance wraps
self.PartMaster = PartMaster() #create …Run Code Online (Sandbox Code Playgroud) 我有一个场景,我有两个新对象,其中只有一个必须根据条件初始化.
但我正在使用"using"块语句来初始化一个新对象.
我怎样才能实现它?请参考以下方案.
int a;
string b;
if()//some codition
{
using(MyClass c1 = new MyClass(a))
{
SomeMethod();
}
}
else
{
using(MyClass c1 = new MyClass(b)
{
SomeMethod();
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来实现单一条件或任何其他方式来减少代码?因为我在两种情况下都调用相同的方法.
提前致谢.
此致,Anish
n = 20
print n.__name__
Run Code Online (Sandbox Code Playgroud)
我收到错误,因为n没有属性__name__:
AttributeError: 'int' object has no attribute '__name__'
Run Code Online (Sandbox Code Playgroud)
但是n是int类的一个实例,并int.__name__给出了结果,那么为什么会n.__name__抛出错误.我期望因为n是一个类的实例int,它应该可以访问该类的所有属性.
instance ×10
class ×4
c# ×2
python ×2
android ×1
attributes ×1
c++ ×1
delegates ×1
destructor ×1
if-statement ×1
java ×1
jquery ×1
kill ×1
object ×1
objective-c ×1
operators ×1
php ×1
reflection ×1
resources ×1
selector ×1
service ×1
singleton ×1
static ×1
tuples ×1
unique ×1
var-dump ×1
widget ×1
winforms ×1