我在使用在界面中实现的私有方法时遇到问题。
我在接口print(string, list)中私有地实现了一个方法RequestData,以隐藏实现,因为我不希望除了类的其他打印方法之外调用它 - 但我将它包含在接口中,因为它与每个实现类都相同。
问题是,当我尝试使用printmy 中FundingRequests实现该RequestData接口的方法时,它显示错误 - 该print方法在接口中的访问RequestData是私有的,因此无法找到它。
好吧...如果接口的私有方法无法从实现类中访问,那么您应该如何使用它们呢?
这是一个错误,还是我误解了接口?
界面:
package com.landbay.datamodel.data;
import java.util.List;
public interface RequestData<E> {
void add(E newRequest);
List<E> getRequests();
List<E> getFulfilledRequests();
List<E> getUnfulfilledRequests();
void printRequests();
void printFulfilledRequests();
void printUnfulfilledRequests();
private void print(String listTitle, List<E> listToPrint) {
StringBuilder string = new StringBuilder();
string.append(listTitle);
for (E request : listToPrint) {
string.append("\n").append(request);
}
System.out.println(string);
}
}
Run Code Online (Sandbox Code Playgroud)
违规类和方法:
public class FundingRequests implements RequestData<FundingRequest> { …Run Code Online (Sandbox Code Playgroud) C# 中“受保护”和“私有受保护”访问修饰符有什么区别?有人可以举例说明吗?
提前致谢。
我只需要一种方法,使一个类的属性只能从另一个类(一种管理类)中"设置".
这在c#中甚至可能吗?
我的同事"可靠地"告诉我,我有一个设计缺陷,但我觉得在承认失败之前我至少应该问社区!
我们假设我们有以下代码:
public class TestScope {
private int a = 1;
public static void main(String[] args) {
TestScope ts = new TestScope();
ts.a = 6;
System.out.println(ts.a);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么在线:ts.a = 6;我可以访问私有变量a?我认为私人会员不能在外面访问.我不会低估这个例子.
我想声明一个Dictionary<string, object>变量,但不知道在哪里/如何.字典中的值将是来自Page(ListBoxes,DropDownLists等)的对象,因此我无法在其他地方创建辅助类.有什么办法可以让代码隐藏中的每个方法都可以访问这个变量吗?
我无法将头部缠绕在与其主机组件相关的火花皮类上.基本上,从我在Flex 4框架中出现的大多数皮肤看到的情况来看,它们并不直接暴露在主机组件中动态设置的属性.相反,它们定义暴露给外观类的状态,以定义组件应该看起来不同的时间.当你拥有一个标准状态集的非常简单的组件时,这一切都很好,但是当你在主机组件中设置了20个不同的属性(假设)应该改变皮肤的外观时它可能变得非常复杂很快.
我已经看到他们习惯于解决这个问题的方法是重写commitproperties并使skin类中的函数无效,从那里获取他们想要的属性的值,然后将它们设置为一个本地实例化的变量.皮肤类.这很好,但我觉得这只是一个修补程序,它使事情变得比它需要的复杂得多.
这是我的问题:有没有办法直接从宿主组件类公开可绑定属性,所以当你定义你的皮肤类时,它可以直接从中读取?假设您有自定义按钮,其布尔属性为"selected".在皮肤类中,您希望为属性"selected"添加get和set函数,这样您就可以在设置时对皮肤执行某些操作.你如何告诉皮肤类这是一个可用的属性供你从主机组件使用?
apache-flex access-modifiers hierarchy actionscript-3 class-hierarchy
在java中,如果方法有一个最终变量(不是静态的),并且如果我多次调用该方法,那么最终变量在每次调用中都可以有不同的值吗?
public void method1(String msg){
final ArrayList<MessageObject> list = method2(msg);
// code that uses list (example just prints)
}
method1("one")
method1("two") are two calls,
Run Code Online (Sandbox Code Playgroud)
如果method2()为每个输入返回不同的列表,上面的代码是否有效(相对于最终修饰符?)
我想保护我的公共方法不被用户调用.
因为我从ajax脚本调用动作,所以我不能使用任何访问修饰符(私有,受保护等).
此外,[HttpPost]不会阻止用户执行虚假请求.
有人有解决方案吗?
谢谢
假设我正在写一个包.我有以下继承层次结构,都在我的包中:
public class Container {
public void size() {
System.out.println(10);
}
}
public final class Bucket extends Container {}
public final class Bag extends Container {}
public class Item {
Container container; // is aware of what container it's in. Will be initialized on construction.
public Container getContainer() {
return container;
}
}
Run Code Online (Sandbox Code Playgroud)
我想阻止其他人进行子类化Container.但我不能让它final因为Bucket和Bag是子类.我必须做到这一点public,否则外人不能打电话getContainer().有没有办法在Java中这样做?否则,人们在这种情况下做了什么?
access-modifiers ×10
java ×4
c# ×3
oop ×2
.net ×1
apache-flex ×1
asp.net ×1
asp.net-mvc ×1
class-design ×1
code-behind ×1
hierarchy ×1
inheritance ×1
interface ×1
private ×1
subclass ×1