我有一个不可变的类
假设我有一个类型为ArrayList的成员变量的getter方法.在那种情况下,当我获得对该变量的引用时,我可以添加或删除它中的元素.在那种情况下,不变性似乎被侵犯了.
任何人都可以详细解释这个概念吗?
考虑将等式方法添加到以下类简单点:
public class Point {
private final int x;
private final int y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
//我对equals的定义
public boolean equals(Point other) {
return (this.getX() == other.getX() && this.getY() == other.getY());
}
Run Code Online (Sandbox Code Playgroud)
这种方法有什么问题?乍一看,似乎工作正常:
Point p1 = new Point(1, 2);
Point p2 = new Point(1, 2);
Point q = new Point(2, 3);
System.out.println(p1.equals(p2)); // prints …Run Code Online (Sandbox Code Playgroud) 升级到 Xcode 12 和 iOS 14 后,似乎开始发生一些奇怪的事情。
应用程序以前在共享菜单选项中显示正常,但突然间它表现得很奇怪并且只在第二次尝试之后才显示。
我的目标是获取网页网址。这是我的共享激活规则。
我什至尝试过新项目并添加了上面带有激活规则的共享扩展。它也做同样的事情,并且应用程序仅从第二次开始显示在共享选项中。此问题主要发生在 Safari 中。
它曾经在 iOS 14 之前运行良好,我也没有在 iOS 14 更改日志中找到任何可能导致问题的共享扩展。谁能帮我指出可能出错的地方或某些可能的原因。
提前致谢!!!
这是我的c ++代码:
class Sample
{
public:
int *ptr;
Sample(int i)
{
ptr = new int(i);
}
~Sample()
{
delete ptr;
}
void PrintVal()
{
cout << "The value is " << *ptr;
}
};
void SomeFunc(Sample x)
{
cout << "Say i am in someFunc " << endl;
}
int main()
{
Sample s1= 10;
SomeFunc(s1);
s1.PrintVal();
}
Run Code Online (Sandbox Code Playgroud)
它返回我的输出,如:
Say i am in someFunc
Null pointer assignment(Run-time error)
Run Code Online (Sandbox Code Playgroud)
这里,当对象通过值传递给SomeFunc时,控件从函数返回时会调用该对象的析构函数
我应该对吗?如果是,那为什么会发生?什么解决方案?
考虑到性能成本,我常常对它们感到困惑,dictionary并hashtable希望对它们进行比较......
哪一个更具成本效益?
这是我的xml:
<connections total="2" >
<person>
<id>ohKiUAZWz2</id>
<first-name>???????</first-name>
<last-name>§|-|ä|-|»?«</last-name>
<headline>--</headline>
</person>
<person>
<id>LmgYe-Nl2a</id>
<first-name>kunal</first-name>
<last-name>b</last-name>
<headline>Student at MscIT,Surat</headline>
</person>
</connection>
Run Code Online (Sandbox Code Playgroud)
从代码背后:
List<LinkWall> LinkWallList = new List<LinkWall>();
XmlNodeList xmlnode = doc.GetElementsByTagName("person");
foreach (XmlElement ele in xmlnode)
{
XmlRootAttribute xr = new XmlRootAttribute("person");
XmlSerializer mySerializer = new XmlSerializer(typeof(LinkWall),xr);
StringReader re = new StringReader(ele.InnerXml);
LinkWallList.Add((LinkWall)mySerializer.Deserialize(re));
}
Run Code Online (Sandbox Code Playgroud)
这是我的班级定义:
[XmlRoot("person")]
public class LinkWall
{
public LinkWall()
{ }
[XmlElement(ElementName = "id")]
public string id { get; set; }
[XmlElement(ElementName = "first-name")]
public string firstName { get; …Run Code Online (Sandbox Code Playgroud)