标签: access-modifiers

在C#中,Java的默认(包)访问权限相当于什么?

在C#中,Java的默认(包)访问权限相当于什么?有吗?反正是否限制对特定命名空间的访问?

问题:

我试图限制对某些方法的访问仅限于我的NUnit测试 - 在JUnit中我会通过使方法包访问并在同一个包中但在src/test/java而不是src/main/java下进行测试来实现这一点.如何在C#中实现类似的功能?

注意:我无法制作方法,internal因为我的测试是在一个单独的程序集中 - 就像NUnit惯例一样 - 或者是它?

c# java nunit unit-testing access-modifiers

7
推荐指数
1
解决办法
4319
查看次数

C#内部getter,带有内部类参数的受保护setter

我有一个问题,想要一个属性有一个内部getter和一个受保护的setter,如本问题所述,我想我通过执行以下操作解决了这个问题:

public class Accessor : AccessorBase
{
    private Connection _connection;

    protected void setConnection(Connection value)
    {
        _connection = value;
    }

    internal Connection GetConnection()
    {
        return _connection;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是,我现在收到此错误:

可访问性不一致:参数类型"连接"比方法"setConnection(连接)"更难访问

这是因为我有internal class Connection.我宁愿不做Connection公开课,同时Accessor 需要公开,所以如何在保持内部getter和受保护的setter的同时解决这个错误呢?

c# access-modifiers

7
推荐指数
3
解决办法
4737
查看次数

如何在库开发中正确使用Java访问修饰符

我正在开发一个库,其他程序员将导入并将其用于其目的.

我对Java访问修饰符的目标感到困惑.

问题是我有以下课程

  • ClassA 在包中 org.mylibrary
  • ClassB 在包中 org.mylibrary.internal

ClassA需要解析ClassB,因此ClassB需要是公共类.

但是,从库用户视图来看,我不打算在我的库外看到ClassB.因为它不应该而且不需要由用户启动.

我想将ClassB移动到包org.mylibrary并使其成为包私有类.

如果我将它移动到同一个包,那将是一个混乱,很难组织,因为我在这个场景中有很多类,所以在一个大包中会有很多.java文件.

通常我将类放在按类别或图层分组的包中,我认为它很容易组织.

我该怎么做呢?人们如何处理这个问题?

java dependencies access-modifiers

7
推荐指数
1
解决办法
401
查看次数

7
推荐指数
1
解决办法
551
查看次数

这种方法访问修饰符的目的是什么?

请考虑以下代码:

    private string _text = null;
    private string[] _values = null;

    public string Text { get { return _text; } }
    public string[] Values { get { return _values; } }
Run Code Online (Sandbox Code Playgroud)

如果仅仅让公众成员不这样做,这又取得了什么成果呢?

c# access-modifiers

7
推荐指数
3
解决办法
281
查看次数

为什么toString()不能是静态方法?

Sup人,我有一个简单但有问题的问题.据我所知,static基本上意味着,对于该类的每个单个实例,此方法将是相同的,如果我们更改它,这将为该类的每个单个实例更改,它也称为类方法.好吧,如果我有一个实现toString ()某种格式的方法的类,那么让我们说:

public String toString() {  
    return "(" + x + "," + y + ")";
}
Run Code Online (Sandbox Code Playgroud)

为什么不能将其设置为静态?由于这种格式对于该类的每个实例都是相同的......?

java static class access-modifiers

7
推荐指数
2
解决办法
4922
查看次数

访问修饰符的目的是什么?

我知道这适用于许多语言,而不仅仅是Java,但这是我最熟悉的语言.

我理解修饰符的作用以及如何使用它们.我只是想知道,为什么我们需要它们?为什么不能访问每个对象,无论它是否需要?

java access-modifiers

7
推荐指数
1
解决办法
2346
查看次数

Groovy相当于没有访问修饰符的java声明

所以,我可以在Groovy中声明一个类:

//groovy-code
class Person {

}
Run Code Online (Sandbox Code Playgroud)

这相当于用java写的东西:

//java-code
public class Person {

}
Run Code Online (Sandbox Code Playgroud)

只是出于好奇..在java中编码的groovy相当于:

//java-code
class Person {

}
Run Code Online (Sandbox Code Playgroud)

我的意思是有没有办法通过声明没有访问修饰符的东西来实现我在Java中可以实现的目标?

java groovy access-modifiers

7
推荐指数
1
解决办法
2317
查看次数

UserControl元素由于其保护级别而无法访问

我正在写一个Windows Phone 8.1应用程序(WinRT).

我的用户控件:XAML:

<UserControl x:Name="LoadingProgressBarPage"
x:Class="Project1.Custom.General.UserControls.LoadingOverlayFullScreen"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Merakyahoga.com.Custom.General.UserControls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
 mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"

Foreground="{x:Null}"
d:DesignHeight="800" d:DesignWidth="480" >

<Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="1*"/>
    </Grid.RowDefinitions>
    <StackPanel 
        Name="LayoutRoot_StackPanelMain"
        Grid.Row="1"
                Orientation="Vertical">
        <ProgressBar Name="ProgressBar" 
                     IsIndeterminate="True"
                     Foreground="{StaticResource DefaultTheme_DarkBlueColor}" 

                     Height="50" 
                     Width="480" 
                     VerticalAlignment="Center"/>

        <StackPanel Name="LayoutRoot_SubStackPanel"
                    Orientation="Horizontal"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center">

            <Image Name="ImageHolder_Main"
                   Width="54">    
            </Image>

            <TextBlock Name="ProgressBarText"
                   Text="Please Wait.." 
                       Margin="10,0,0,0"
                   FontWeight="Normal"
                   HorizontalAlignment="Center"
                       FontSize="18"
                       Foreground="{StaticResource DefaultTheme_DarkBlueColor}" VerticalAlignment="Center"/>

        </StackPanel>

    </StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

CS:

namespace Project1.Custom.General.UserControls
{
    public partial class LoadingOverlayFullScreen : UserControl
    {


        public LoadingOverlayFullScreen()      
        {
            InitializeComponent()

            //WINRT: …
Run Code Online (Sandbox Code Playgroud)

c# xaml user-controls access-modifiers windows-phone-8.1

7
推荐指数
1
解决办法
3879
查看次数

哪些是Java注释中字段和方法的默认修饰符?

哪个是默认修饰符for xmin

public @interface Anno {
    int m() default x;
    int x = 10;
}
Run Code Online (Sandbox Code Playgroud)

我想上面的代码相当于:

public @interface Anno {
    public int m() default x;
    public static final int x = 10;
}
Run Code Online (Sandbox Code Playgroud)

修饰语publicpublic static final冗余,但我没有找到官方解释.

我在这里看:https : //docs.oracle.com/javase/8/docs/technotes/guides/language/annotations.html https://docs.oracle.com/javase/tutorial/java/annotations/index. html http://www.vogella.com/tutorials/JavaAnnotations/article.html

有关于这些修饰符的文档吗?或者有人可以提供"正式"解释吗?

java annotations access-modifiers

7
推荐指数
1
解决办法
109
查看次数